From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.9 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 7E28BC00449 for ; Wed, 3 Oct 2018 16:45:52 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 472012089F for ; Wed, 3 Oct 2018 16:45:52 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=synopsys.com header.i=@synopsys.com header.b="WxBncMYz" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 472012089F Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=synopsys.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727065AbeJCXe5 (ORCPT ); Wed, 3 Oct 2018 19:34:57 -0400 Received: from smtprelay.synopsys.com ([198.182.60.111]:39490 "EHLO smtprelay.synopsys.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726842AbeJCXe4 (ORCPT ); Wed, 3 Oct 2018 19:34:56 -0400 Received: from mailhost.synopsys.com (mailhost2.synopsys.com [10.13.184.66]) by smtprelay.synopsys.com (Postfix) with ESMTP id 551E710C0558; Wed, 3 Oct 2018 09:45:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=synopsys.com; s=mail; t=1538585146; bh=omY/f8Wi6zegYSgr43GTNQyuRQqPQw7Jc9Ap4Tve6xc=; h=From:To:Cc:Subject:Date:From; b=WxBncMYz65rydfgRD7o5N0JkshKuO41BomG7J/NsD8X4vkIgXFE+ne143I/eTZ2mi ffZaI1F5a3F5OIcu0qZc1wk7O/WaTIzxh/NbHNNIJj0wxeoIScGXAd5fdeukGW9+nC I5jFdGgYfNbyZl3MwJnFxKP013XouzbkC14obo0l1Y7zlDJBnUZJhmvvEFNdX3p3Px RNvrun/JwpjA6IrCRz1yfsb8yCXVXbqcs/fITzyNJyfu8807G45TlsjMWZ0+FK5UiX vFq7bOMUSiSROiCS8EdzETGsJF7I8QuVkLHACHNOmKnT2/ghstPZQv1Xcwh2hLYvg0 eK15x8rHpsPbA== Received: from paltsev-e7480.internal.synopsys.com (paltsev-e7480.internal.synopsys.com [10.121.3.38]) by mailhost.synopsys.com (Postfix) with ESMTP id D22B83F69; Wed, 3 Oct 2018 09:45:43 -0700 (PDT) From: Eugeniy Paltsev To: dri-devel@lists.freedesktop.org Cc: linux-snps-arc@lists.infradead.org, linux-kernel@vger.kernel.org, Gustavo Padovan , Maarten Lankhorst , Sean Paul , David Airlie , Alexey Brodkin , stable@vger.kernel.org, Eugeniy Paltsev Subject: [PATCH v2] drm: fb-helper: Reject all pixel format changing requests Date: Wed, 3 Oct 2018 19:45:38 +0300 Message-Id: <20181003164538.5534-1-Eugeniy.Paltsev@synopsys.com> X-Mailer: git-send-email 2.14.4 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org drm fbdev emulation doesn't support changing the pixel format at all, so reject all pixel format changing requests. Cc: stable@vger.kernel.org Signed-off-by: Eugeniy Paltsev --- Changes v1->v2: * Reject all pixel format changing request, not just the invalid ones. drivers/gpu/drm/drm_fb_helper.c | 91 ++++++++++++----------------------------- 1 file changed, 26 insertions(+), 65 deletions(-) diff --git a/drivers/gpu/drm/drm_fb_helper.c b/drivers/gpu/drm/drm_fb_helper.c index 16ec93b75dbf..48598d7f673f 100644 --- a/drivers/gpu/drm/drm_fb_helper.c +++ b/drivers/gpu/drm/drm_fb_helper.c @@ -1580,6 +1580,25 @@ int drm_fb_helper_ioctl(struct fb_info *info, unsigned int cmd, } EXPORT_SYMBOL(drm_fb_helper_ioctl); +static bool drm_fb_pixel_format_equal(const struct fb_var_screeninfo *var_1, + const struct fb_var_screeninfo *var_2) +{ + return var_1->bits_per_pixel == var_2->bits_per_pixel && + var_1->grayscale == var_2->grayscale && + var_1->red.offset == var_2->red.offset && + var_1->red.length == var_2->red.length && + var_1->red.msb_right == var_2->red.msb_right && + var_1->green.offset == var_2->green.offset && + var_1->green.length == var_2->green.length && + var_1->green.msb_right == var_2->green.msb_right && + var_1->blue.offset == var_2->blue.offset && + var_1->blue.length == var_2->blue.length && + var_1->blue.msb_right == var_2->blue.msb_right && + var_1->transp.offset == var_2->transp.offset && + var_1->transp.length == var_2->transp.length && + var_1->transp.msb_right == var_2->transp.msb_right; +} + /** * drm_fb_helper_check_var - implementation for &fb_ops.fb_check_var * @var: screeninfo to check @@ -1590,7 +1609,6 @@ int drm_fb_helper_check_var(struct fb_var_screeninfo *var, { struct drm_fb_helper *fb_helper = info->par; struct drm_framebuffer *fb = fb_helper->fb; - int depth; if (var->pixclock != 0 || in_dbg_master()) return -EINVAL; @@ -1610,72 +1628,15 @@ int drm_fb_helper_check_var(struct fb_var_screeninfo *var, return -EINVAL; } - switch (var->bits_per_pixel) { - case 16: - depth = (var->green.length == 6) ? 16 : 15; - break; - case 32: - depth = (var->transp.length > 0) ? 32 : 24; - break; - default: - depth = var->bits_per_pixel; - break; - } - - switch (depth) { - case 8: - var->red.offset = 0; - var->green.offset = 0; - var->blue.offset = 0; - var->red.length = 8; - var->green.length = 8; - var->blue.length = 8; - var->transp.length = 0; - var->transp.offset = 0; - break; - case 15: - var->red.offset = 10; - var->green.offset = 5; - var->blue.offset = 0; - var->red.length = 5; - var->green.length = 5; - var->blue.length = 5; - var->transp.length = 1; - var->transp.offset = 15; - break; - case 16: - var->red.offset = 11; - var->green.offset = 5; - var->blue.offset = 0; - var->red.length = 5; - var->green.length = 6; - var->blue.length = 5; - var->transp.length = 0; - var->transp.offset = 0; - break; - case 24: - var->red.offset = 16; - var->green.offset = 8; - var->blue.offset = 0; - var->red.length = 8; - var->green.length = 8; - var->blue.length = 8; - var->transp.length = 0; - var->transp.offset = 0; - break; - case 32: - var->red.offset = 16; - var->green.offset = 8; - var->blue.offset = 0; - var->red.length = 8; - var->green.length = 8; - var->blue.length = 8; - var->transp.length = 8; - var->transp.offset = 24; - break; - default: + /* + * drm fbdev emulation doesn't support changing the pixel format at all, + * so reject all pixel format changing requests. + */ + if (!drm_fb_pixel_format_equal(var, &info->var)) { + DRM_DEBUG("fbdev emulation doesn't support changing the pixel format\n"); return -EINVAL; } + return 0; } EXPORT_SYMBOL(drm_fb_helper_check_var); -- 2.14.4 From mboxrd@z Thu Jan 1 00:00:00 1970 From: Eugeniy.Paltsev@synopsys.com (Eugeniy Paltsev) Date: Wed, 3 Oct 2018 19:45:38 +0300 Subject: [PATCH v2] drm: fb-helper: Reject all pixel format changing requests List-ID: Message-ID: <20181003164538.5534-1-Eugeniy.Paltsev@synopsys.com> To: linux-snps-arc@lists.infradead.org drm fbdev emulation doesn't support changing the pixel format at all, so reject all pixel format changing requests. Cc: stable at vger.kernel.org Signed-off-by: Eugeniy Paltsev --- Changes v1->v2: * Reject all pixel format changing request, not just the invalid ones. drivers/gpu/drm/drm_fb_helper.c | 91 ++++++++++++----------------------------- 1 file changed, 26 insertions(+), 65 deletions(-) diff --git a/drivers/gpu/drm/drm_fb_helper.c b/drivers/gpu/drm/drm_fb_helper.c index 16ec93b75dbf..48598d7f673f 100644 --- a/drivers/gpu/drm/drm_fb_helper.c +++ b/drivers/gpu/drm/drm_fb_helper.c @@ -1580,6 +1580,25 @@ int drm_fb_helper_ioctl(struct fb_info *info, unsigned int cmd, } EXPORT_SYMBOL(drm_fb_helper_ioctl); +static bool drm_fb_pixel_format_equal(const struct fb_var_screeninfo *var_1, + const struct fb_var_screeninfo *var_2) +{ + return var_1->bits_per_pixel == var_2->bits_per_pixel && + var_1->grayscale == var_2->grayscale && + var_1->red.offset == var_2->red.offset && + var_1->red.length == var_2->red.length && + var_1->red.msb_right == var_2->red.msb_right && + var_1->green.offset == var_2->green.offset && + var_1->green.length == var_2->green.length && + var_1->green.msb_right == var_2->green.msb_right && + var_1->blue.offset == var_2->blue.offset && + var_1->blue.length == var_2->blue.length && + var_1->blue.msb_right == var_2->blue.msb_right && + var_1->transp.offset == var_2->transp.offset && + var_1->transp.length == var_2->transp.length && + var_1->transp.msb_right == var_2->transp.msb_right; +} + /** * drm_fb_helper_check_var - implementation for &fb_ops.fb_check_var * @var: screeninfo to check @@ -1590,7 +1609,6 @@ int drm_fb_helper_check_var(struct fb_var_screeninfo *var, { struct drm_fb_helper *fb_helper = info->par; struct drm_framebuffer *fb = fb_helper->fb; - int depth; if (var->pixclock != 0 || in_dbg_master()) return -EINVAL; @@ -1610,72 +1628,15 @@ int drm_fb_helper_check_var(struct fb_var_screeninfo *var, return -EINVAL; } - switch (var->bits_per_pixel) { - case 16: - depth = (var->green.length == 6) ? 16 : 15; - break; - case 32: - depth = (var->transp.length > 0) ? 32 : 24; - break; - default: - depth = var->bits_per_pixel; - break; - } - - switch (depth) { - case 8: - var->red.offset = 0; - var->green.offset = 0; - var->blue.offset = 0; - var->red.length = 8; - var->green.length = 8; - var->blue.length = 8; - var->transp.length = 0; - var->transp.offset = 0; - break; - case 15: - var->red.offset = 10; - var->green.offset = 5; - var->blue.offset = 0; - var->red.length = 5; - var->green.length = 5; - var->blue.length = 5; - var->transp.length = 1; - var->transp.offset = 15; - break; - case 16: - var->red.offset = 11; - var->green.offset = 5; - var->blue.offset = 0; - var->red.length = 5; - var->green.length = 6; - var->blue.length = 5; - var->transp.length = 0; - var->transp.offset = 0; - break; - case 24: - var->red.offset = 16; - var->green.offset = 8; - var->blue.offset = 0; - var->red.length = 8; - var->green.length = 8; - var->blue.length = 8; - var->transp.length = 0; - var->transp.offset = 0; - break; - case 32: - var->red.offset = 16; - var->green.offset = 8; - var->blue.offset = 0; - var->red.length = 8; - var->green.length = 8; - var->blue.length = 8; - var->transp.length = 8; - var->transp.offset = 24; - break; - default: + /* + * drm fbdev emulation doesn't support changing the pixel format at all, + * so reject all pixel format changing requests. + */ + if (!drm_fb_pixel_format_equal(var, &info->var)) { + DRM_DEBUG("fbdev emulation doesn't support changing the pixel format\n"); return -EINVAL; } + return 0; } EXPORT_SYMBOL(drm_fb_helper_check_var); -- 2.14.4 From mboxrd@z Thu Jan 1 00:00:00 1970 From: Eugeniy Paltsev Subject: [PATCH v2] drm: fb-helper: Reject all pixel format changing requests Date: Wed, 3 Oct 2018 19:45:38 +0300 Message-ID: <20181003164538.5534-1-Eugeniy.Paltsev@synopsys.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from smtprelay.synopsys.com (us01smtprelay-2.synopsys.com [198.182.60.111]) by gabe.freedesktop.org (Postfix) with ESMTPS id F39866E4FB for ; Wed, 3 Oct 2018 16:45:46 +0000 (UTC) List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org Cc: David Airlie , Alexey Brodkin , linux-kernel@vger.kernel.org, stable@vger.kernel.org, Eugeniy Paltsev , linux-snps-arc@lists.infradead.org, Sean Paul List-Id: dri-devel@lists.freedesktop.org ZHJtIGZiZGV2IGVtdWxhdGlvbiBkb2Vzbid0IHN1cHBvcnQgY2hhbmdpbmcgdGhlIHBpeGVsIGZv cm1hdCBhdCBhbGwsCnNvIHJlamVjdCBhbGwgcGl4ZWwgZm9ybWF0IGNoYW5naW5nIHJlcXVlc3Rz LgoKQ2M6IHN0YWJsZUB2Z2VyLmtlcm5lbC5vcmcKU2lnbmVkLW9mZi1ieTogRXVnZW5peSBQYWx0 c2V2IDxFdWdlbml5LlBhbHRzZXZAc3lub3BzeXMuY29tPgotLS0KQ2hhbmdlcyB2MS0+djI6CiAq IFJlamVjdCBhbGwgcGl4ZWwgZm9ybWF0IGNoYW5naW5nIHJlcXVlc3QsIG5vdCBqdXN0IHRoZSBp bnZhbGlkIG9uZXMuCgogZHJpdmVycy9ncHUvZHJtL2RybV9mYl9oZWxwZXIuYyB8IDkxICsrKysr KysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMjYg aW5zZXJ0aW9ucygrKSwgNjUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2RybV9mYl9oZWxwZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZmJfaGVscGVyLmMKaW5k ZXggMTZlYzkzYjc1ZGJmLi40ODU5OGQ3ZjY3M2YgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9kcm1fZmJfaGVscGVyLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9mYl9oZWxwZXIuYwpA QCAtMTU4MCw2ICsxNTgwLDI1IEBAIGludCBkcm1fZmJfaGVscGVyX2lvY3RsKHN0cnVjdCBmYl9p bmZvICppbmZvLCB1bnNpZ25lZCBpbnQgY21kLAogfQogRVhQT1JUX1NZTUJPTChkcm1fZmJfaGVs cGVyX2lvY3RsKTsKIAorc3RhdGljIGJvb2wgZHJtX2ZiX3BpeGVsX2Zvcm1hdF9lcXVhbChjb25z dCBzdHJ1Y3QgZmJfdmFyX3NjcmVlbmluZm8gKnZhcl8xLAorCQkJCSAgICAgIGNvbnN0IHN0cnVj dCBmYl92YXJfc2NyZWVuaW5mbyAqdmFyXzIpCit7CisJcmV0dXJuIHZhcl8xLT5iaXRzX3Blcl9w aXhlbCA9PSB2YXJfMi0+Yml0c19wZXJfcGl4ZWwgJiYKKwkgICAgICAgdmFyXzEtPmdyYXlzY2Fs ZSA9PSB2YXJfMi0+Z3JheXNjYWxlICYmCisJICAgICAgIHZhcl8xLT5yZWQub2Zmc2V0ID09IHZh cl8yLT5yZWQub2Zmc2V0ICYmCisJICAgICAgIHZhcl8xLT5yZWQubGVuZ3RoID09IHZhcl8yLT5y ZWQubGVuZ3RoICYmCisJICAgICAgIHZhcl8xLT5yZWQubXNiX3JpZ2h0ID09IHZhcl8yLT5yZWQu bXNiX3JpZ2h0ICYmCisJICAgICAgIHZhcl8xLT5ncmVlbi5vZmZzZXQgPT0gdmFyXzItPmdyZWVu Lm9mZnNldCAmJgorCSAgICAgICB2YXJfMS0+Z3JlZW4ubGVuZ3RoID09IHZhcl8yLT5ncmVlbi5s ZW5ndGggJiYKKwkgICAgICAgdmFyXzEtPmdyZWVuLm1zYl9yaWdodCA9PSB2YXJfMi0+Z3JlZW4u bXNiX3JpZ2h0ICYmCisJICAgICAgIHZhcl8xLT5ibHVlLm9mZnNldCA9PSB2YXJfMi0+Ymx1ZS5v ZmZzZXQgJiYKKwkgICAgICAgdmFyXzEtPmJsdWUubGVuZ3RoID09IHZhcl8yLT5ibHVlLmxlbmd0 aCAmJgorCSAgICAgICB2YXJfMS0+Ymx1ZS5tc2JfcmlnaHQgPT0gdmFyXzItPmJsdWUubXNiX3Jp Z2h0ICYmCisJICAgICAgIHZhcl8xLT50cmFuc3Aub2Zmc2V0ID09IHZhcl8yLT50cmFuc3Aub2Zm c2V0ICYmCisJICAgICAgIHZhcl8xLT50cmFuc3AubGVuZ3RoID09IHZhcl8yLT50cmFuc3AubGVu Z3RoICYmCisJICAgICAgIHZhcl8xLT50cmFuc3AubXNiX3JpZ2h0ID09IHZhcl8yLT50cmFuc3Au bXNiX3JpZ2h0OworfQorCiAvKioKICAqIGRybV9mYl9oZWxwZXJfY2hlY2tfdmFyIC0gaW1wbGVt ZW50YXRpb24gZm9yICZmYl9vcHMuZmJfY2hlY2tfdmFyCiAgKiBAdmFyOiBzY3JlZW5pbmZvIHRv IGNoZWNrCkBAIC0xNTkwLDcgKzE2MDksNiBAQCBpbnQgZHJtX2ZiX2hlbHBlcl9jaGVja192YXIo c3RydWN0IGZiX3Zhcl9zY3JlZW5pbmZvICp2YXIsCiB7CiAJc3RydWN0IGRybV9mYl9oZWxwZXIg KmZiX2hlbHBlciA9IGluZm8tPnBhcjsKIAlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IGZi X2hlbHBlci0+ZmI7Ci0JaW50IGRlcHRoOwogCiAJaWYgKHZhci0+cGl4Y2xvY2sgIT0gMCB8fCBp bl9kYmdfbWFzdGVyKCkpCiAJCXJldHVybiAtRUlOVkFMOwpAQCAtMTYxMCw3MiArMTYyOCwxNSBA QCBpbnQgZHJtX2ZiX2hlbHBlcl9jaGVja192YXIoc3RydWN0IGZiX3Zhcl9zY3JlZW5pbmZvICp2 YXIsCiAJCXJldHVybiAtRUlOVkFMOwogCX0KIAotCXN3aXRjaCAodmFyLT5iaXRzX3Blcl9waXhl bCkgewotCWNhc2UgMTY6Ci0JCWRlcHRoID0gKHZhci0+Z3JlZW4ubGVuZ3RoID09IDYpID8gMTYg OiAxNTsKLQkJYnJlYWs7Ci0JY2FzZSAzMjoKLQkJZGVwdGggPSAodmFyLT50cmFuc3AubGVuZ3Ro ID4gMCkgPyAzMiA6IDI0OwotCQlicmVhazsKLQlkZWZhdWx0OgotCQlkZXB0aCA9IHZhci0+Yml0 c19wZXJfcGl4ZWw7Ci0JCWJyZWFrOwotCX0KLQotCXN3aXRjaCAoZGVwdGgpIHsKLQljYXNlIDg6 Ci0JCXZhci0+cmVkLm9mZnNldCA9IDA7Ci0JCXZhci0+Z3JlZW4ub2Zmc2V0ID0gMDsKLQkJdmFy LT5ibHVlLm9mZnNldCA9IDA7Ci0JCXZhci0+cmVkLmxlbmd0aCA9IDg7Ci0JCXZhci0+Z3JlZW4u bGVuZ3RoID0gODsKLQkJdmFyLT5ibHVlLmxlbmd0aCA9IDg7Ci0JCXZhci0+dHJhbnNwLmxlbmd0 aCA9IDA7Ci0JCXZhci0+dHJhbnNwLm9mZnNldCA9IDA7Ci0JCWJyZWFrOwotCWNhc2UgMTU6Ci0J CXZhci0+cmVkLm9mZnNldCA9IDEwOwotCQl2YXItPmdyZWVuLm9mZnNldCA9IDU7Ci0JCXZhci0+ Ymx1ZS5vZmZzZXQgPSAwOwotCQl2YXItPnJlZC5sZW5ndGggPSA1OwotCQl2YXItPmdyZWVuLmxl bmd0aCA9IDU7Ci0JCXZhci0+Ymx1ZS5sZW5ndGggPSA1OwotCQl2YXItPnRyYW5zcC5sZW5ndGgg PSAxOwotCQl2YXItPnRyYW5zcC5vZmZzZXQgPSAxNTsKLQkJYnJlYWs7Ci0JY2FzZSAxNjoKLQkJ dmFyLT5yZWQub2Zmc2V0ID0gMTE7Ci0JCXZhci0+Z3JlZW4ub2Zmc2V0ID0gNTsKLQkJdmFyLT5i bHVlLm9mZnNldCA9IDA7Ci0JCXZhci0+cmVkLmxlbmd0aCA9IDU7Ci0JCXZhci0+Z3JlZW4ubGVu Z3RoID0gNjsKLQkJdmFyLT5ibHVlLmxlbmd0aCA9IDU7Ci0JCXZhci0+dHJhbnNwLmxlbmd0aCA9 IDA7Ci0JCXZhci0+dHJhbnNwLm9mZnNldCA9IDA7Ci0JCWJyZWFrOwotCWNhc2UgMjQ6Ci0JCXZh ci0+cmVkLm9mZnNldCA9IDE2OwotCQl2YXItPmdyZWVuLm9mZnNldCA9IDg7Ci0JCXZhci0+Ymx1 ZS5vZmZzZXQgPSAwOwotCQl2YXItPnJlZC5sZW5ndGggPSA4OwotCQl2YXItPmdyZWVuLmxlbmd0 aCA9IDg7Ci0JCXZhci0+Ymx1ZS5sZW5ndGggPSA4OwotCQl2YXItPnRyYW5zcC5sZW5ndGggPSAw OwotCQl2YXItPnRyYW5zcC5vZmZzZXQgPSAwOwotCQlicmVhazsKLQljYXNlIDMyOgotCQl2YXIt PnJlZC5vZmZzZXQgPSAxNjsKLQkJdmFyLT5ncmVlbi5vZmZzZXQgPSA4OwotCQl2YXItPmJsdWUu b2Zmc2V0ID0gMDsKLQkJdmFyLT5yZWQubGVuZ3RoID0gODsKLQkJdmFyLT5ncmVlbi5sZW5ndGgg PSA4OwotCQl2YXItPmJsdWUubGVuZ3RoID0gODsKLQkJdmFyLT50cmFuc3AubGVuZ3RoID0gODsK LQkJdmFyLT50cmFuc3Aub2Zmc2V0ID0gMjQ7Ci0JCWJyZWFrOwotCWRlZmF1bHQ6CisJLyoKKwkg KiBkcm0gZmJkZXYgZW11bGF0aW9uIGRvZXNuJ3Qgc3VwcG9ydCBjaGFuZ2luZyB0aGUgcGl4ZWwg Zm9ybWF0IGF0IGFsbCwKKwkgKiBzbyByZWplY3QgYWxsIHBpeGVsIGZvcm1hdCBjaGFuZ2luZyBy ZXF1ZXN0cy4KKwkgKi8KKwlpZiAoIWRybV9mYl9waXhlbF9mb3JtYXRfZXF1YWwodmFyLCAmaW5m by0+dmFyKSkgeworCQlEUk1fREVCVUcoImZiZGV2IGVtdWxhdGlvbiBkb2Vzbid0IHN1cHBvcnQg Y2hhbmdpbmcgdGhlIHBpeGVsIGZvcm1hdFxuIik7CiAJCXJldHVybiAtRUlOVkFMOwogCX0KKwog CXJldHVybiAwOwogfQogRVhQT1JUX1NZTUJPTChkcm1fZmJfaGVscGVyX2NoZWNrX3Zhcik7Ci0t IAoyLjE0LjQKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpo dHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=