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 Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 29E51EB64D8 for ; Thu, 22 Jun 2023 16:55:40 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229585AbjFVQzI (ORCPT ); Thu, 22 Jun 2023 12:55:08 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42370 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231393AbjFVQym (ORCPT ); Thu, 22 Jun 2023 12:54:42 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [IPv6:2604:1380:4641:c500::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 242D72703 for ; Thu, 22 Jun 2023 09:54:14 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 73B60618C4 for ; Thu, 22 Jun 2023 16:54:13 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 84E05C433C8; Thu, 22 Jun 2023 16:54:09 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1687452852; bh=WvPMeVtT8HySVlQQYfCD9Qi6NPFDyHkTCRsPrIqcEts=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=SX7wwboWbkVlRORAbsFOmJf2/KjqoskquLbeQwt+WXUKFFFnqejBShUZNP5XQqqW5 Gru5bbKxs0zW/wV9kc4I5TKWsKB4mpc6m/Rlep7PmPdqLgn6mOOz6Kus6gzuDeoVAn xLCsreE+Ecnf7a1GwyDPTTHbxWEkcJRSSylevY3IM4wnhmsxXyXylitOf09tivZUs7 2HpPWw+jNAth/cJN/BGsX+iR18YKfUIOM2rj1uHUzhDLBkkH24CN9biidt0kit6Lvi Yv7MCDrlnip/SDDTMrnNPh3Lff+sgVqReI55CVfw9JiFuu3hiKLGie9mRWHKoSF6Om mkCMBtHv0JaTg== Date: Thu, 22 Jun 2023 17:54:05 +0100 From: Lee Jones To: Nick Desaulniers Cc: Nathan Chancellor , sean.wang@mediatek.com, pavel@ucw.cz, matthias.bgg@gmail.com, angelogioacchino.delregno@collabora.com, trix@redhat.com, linux-leds@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, llvm@lists.linux.dev, patches@lists.linux.dev Subject: Re: [PATCH] leds: leds-mt6323: Adjust return/parameter types in wled get/set callbacks Message-ID: <20230622165405.GX10378@google.com> References: <20230622-mt6323-wled-wincompatible-function-pointer-types-strict-v1-1-6ad256f220e8@kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: Precedence: bulk List-ID: X-Mailing-List: linux-leds@vger.kernel.org On Thu, 22 Jun 2023, Nick Desaulniers wrote: > On Thu, Jun 22, 2023 at 9:12 AM Nathan Chancellor wrote: > > > > Clang's kernel Control Flow Integrity (kCFI) is a compiler-based > > security mitigation that ensures the target of an indirect function call > > matches the expected type of the call and trapping if they do not match > > exactly. The warning -Wincompatible-function-pointer-types-strict aims > > to catch these issues at compile time, which reveals: > > > > drivers/leds/leds-mt6323.c:598:49: error: incompatible function pointer types assigning to 'int (*)(struct led_classdev *, enum led_brightness)' from 'int (struct led_classdev *, unsigned int)' [-Werror,-Wincompatible-function-pointer-types-strict] > > 598 | leds->led[reg]->cdev.brightness_set_blocking = > > | ^ > > 599 | mt6323_wled_set_brightness; > > | ~~~~~~~~~~~~~~~~~~~~~~~~~~ > > drivers/leds/leds-mt6323.c:600:40: error: incompatible function pointer types assigning to 'enum led_brightness (*)(struct led_classdev *)' from 'unsigned int (struct led_classdev *)' [-Werror,-Wincompatible-function-pointer-types-strict] > > 600 | leds->led[reg]->cdev.brightness_get = > > | ^ > > 601 | mt6323_get_wled_brightness; > > | ~~~~~~~~~~~~~~~~~~~~~~~~~~ > > 2 errors generated. > > > > While 'unsigned int' is ABI compatible with 'enum led_brightness' (hence > > no warning from -Wincompatible-function-pointer-types) and the callers > > of these callbacks use/pass the values as 'unsigned int', the mismatch > > between the prototype and the called function will trip kCFI at runtime. > > > > Change the types in the implementations to match the prototypes, clearing > > up the warning and avoiding kCFI failures. > > > > Fixes: 9bb0a9e0626c ("leds: leds-mt6323: Add support for WLEDs and MT6332") > > Signed-off-by: Nathan Chancellor > > Thanks for the patch! Consider additionally having > mt6323_get_wled_brightness return LED_OFF rather than 0 in its > ternary. https://elixir.bootlin.com/linux/latest/source/include/linux/leds.h#L32 Perhaps this is not relevant for this older driver though? I'd really like some more information from Pavel on the history. > Reviewed-by: Nick Desaulniers > > > > --- > > drivers/leds/leds-mt6323.c | 6 +++--- > > 1 file changed, 3 insertions(+), 3 deletions(-) > > > > diff --git a/drivers/leds/leds-mt6323.c b/drivers/leds/leds-mt6323.c > > index e8fecfc2e90a..24f35bdb55fb 100644 > > --- a/drivers/leds/leds-mt6323.c > > +++ b/drivers/leds/leds-mt6323.c > > @@ -76,7 +76,7 @@ struct mt6323_led { > > int id; > > struct mt6323_leds *parent; > > struct led_classdev cdev; > > - unsigned int current_brightness; > > + enum led_brightness current_brightness; > > }; > > > > /** > > @@ -451,7 +451,7 @@ static int mtk_wled_hw_off(struct led_classdev *cdev) > > return 0; > > } > > > > -static unsigned int mt6323_get_wled_brightness(struct led_classdev *cdev) > > +static enum led_brightness mt6323_get_wled_brightness(struct led_classdev *cdev) > > { > > struct mt6323_led *led = container_of(cdev, struct mt6323_led, cdev); > > struct mt6323_leds *leds = led->parent; > > @@ -471,7 +471,7 @@ static unsigned int mt6323_get_wled_brightness(struct led_classdev *cdev) > > } > > > > static int mt6323_wled_set_brightness(struct led_classdev *cdev, > > - unsigned int brightness) > > + enum led_brightness brightness) > > { > > struct mt6323_led *led = container_of(cdev, struct mt6323_led, cdev); > > struct mt6323_leds *leds = led->parent; > > > > --- > > base-commit: 7bd932d9adbcc5c5370d968bdb0b00385606bf3a > > change-id: 20230621-mt6323-wled-wincompatible-function-pointer-types-strict-334f06d92ffb > > > > Best regards, > > -- > > Nathan Chancellor > > > > > > > -- > Thanks, > ~Nick Desaulniers -- Lee Jones [李琼斯] 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 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 495F0EB64DA for ; Thu, 22 Jun 2023 16:54:39 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References: Message-ID:Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=28hJ2Dkgcv7UROorJ0VxR/4nODT17b3hCKbKl0By/YA=; b=uQfcQ2hHAaYL+B e6TL9U3RkD8/Ir81oqIc7/T592wVeDhS/jlAlZL3tf0vtWeWT3pBg9PnNZhfXTPVMqJcnslmLEiwi B5LYc2LQ9OdElHQQlCVW9QvCMOD+R+CN7z8p0iDQmLpFS65q/XuRep5ohKmqWhRLCF+jT2P9yoxEh y7fG86yUxlLu3fx50d3ukUMPYpjwSjo8Hf4hoQ+rd+wVpHl9LePfeTwzmXLwgFmyp6H1mnOFNAaCS jPza139QE1MK7fOqyw0wAb8xg3QyWZPo1b3iSYDQwMhh2spj4ow/fwy9M0GU1MlLMGs4Xqq6XKrSr XRuyJMiGBrMJmH8Tms5Q==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1qCNZZ-001HKE-1E; Thu, 22 Jun 2023 16:54:17 +0000 Received: from dfw.source.kernel.org ([2604:1380:4641:c500::1]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1qCNZV-001HJM-2y; Thu, 22 Jun 2023 16:54:15 +0000 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 73CB8618C5; Thu, 22 Jun 2023 16:54:13 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 84E05C433C8; Thu, 22 Jun 2023 16:54:09 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1687452852; bh=WvPMeVtT8HySVlQQYfCD9Qi6NPFDyHkTCRsPrIqcEts=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=SX7wwboWbkVlRORAbsFOmJf2/KjqoskquLbeQwt+WXUKFFFnqejBShUZNP5XQqqW5 Gru5bbKxs0zW/wV9kc4I5TKWsKB4mpc6m/Rlep7PmPdqLgn6mOOz6Kus6gzuDeoVAn xLCsreE+Ecnf7a1GwyDPTTHbxWEkcJRSSylevY3IM4wnhmsxXyXylitOf09tivZUs7 2HpPWw+jNAth/cJN/BGsX+iR18YKfUIOM2rj1uHUzhDLBkkH24CN9biidt0kit6Lvi Yv7MCDrlnip/SDDTMrnNPh3Lff+sgVqReI55CVfw9JiFuu3hiKLGie9mRWHKoSF6Om mkCMBtHv0JaTg== Date: Thu, 22 Jun 2023 17:54:05 +0100 From: Lee Jones To: Nick Desaulniers Cc: Nathan Chancellor , sean.wang@mediatek.com, pavel@ucw.cz, matthias.bgg@gmail.com, angelogioacchino.delregno@collabora.com, trix@redhat.com, linux-leds@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, llvm@lists.linux.dev, patches@lists.linux.dev Subject: Re: [PATCH] leds: leds-mt6323: Adjust return/parameter types in wled get/set callbacks Message-ID: <20230622165405.GX10378@google.com> References: <20230622-mt6323-wled-wincompatible-function-pointer-types-strict-v1-1-6ad256f220e8@kernel.org> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230622_095414_044854_7271FEFF X-CRM114-Status: GOOD ( 27.11 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org T24gVGh1LCAyMiBKdW4gMjAyMywgTmljayBEZXNhdWxuaWVycyB3cm90ZToKCj4gT24gVGh1LCBK dW4gMjIsIDIwMjMgYXQgOToxMuKAr0FNIE5hdGhhbiBDaGFuY2VsbG9yIDxuYXRoYW5Aa2VybmVs Lm9yZz4gd3JvdGU6Cj4gPgo+ID4gQ2xhbmcncyBrZXJuZWwgQ29udHJvbCBGbG93IEludGVncml0 eSAoa0NGSSkgaXMgYSBjb21waWxlci1iYXNlZAo+ID4gc2VjdXJpdHkgbWl0aWdhdGlvbiB0aGF0 IGVuc3VyZXMgdGhlIHRhcmdldCBvZiBhbiBpbmRpcmVjdCBmdW5jdGlvbiBjYWxsCj4gPiBtYXRj aGVzIHRoZSBleHBlY3RlZCB0eXBlIG9mIHRoZSBjYWxsIGFuZCB0cmFwcGluZyBpZiB0aGV5IGRv IG5vdCBtYXRjaAo+ID4gZXhhY3RseS4gVGhlIHdhcm5pbmcgLVdpbmNvbXBhdGlibGUtZnVuY3Rp b24tcG9pbnRlci10eXBlcy1zdHJpY3QgYWltcwo+ID4gdG8gY2F0Y2ggdGhlc2UgaXNzdWVzIGF0 IGNvbXBpbGUgdGltZSwgd2hpY2ggcmV2ZWFsczoKPiA+Cj4gPiAgZHJpdmVycy9sZWRzL2xlZHMt bXQ2MzIzLmM6NTk4OjQ5OiBlcnJvcjogaW5jb21wYXRpYmxlIGZ1bmN0aW9uIHBvaW50ZXIgdHlw ZXMgYXNzaWduaW5nIHRvICdpbnQgKCopKHN0cnVjdCBsZWRfY2xhc3NkZXYgKiwgZW51bSBsZWRf YnJpZ2h0bmVzcyknIGZyb20gJ2ludCAoc3RydWN0IGxlZF9jbGFzc2RldiAqLCB1bnNpZ25lZCBp bnQpJyBbLVdlcnJvciwtV2luY29tcGF0aWJsZS1mdW5jdGlvbi1wb2ludGVyLXR5cGVzLXN0cmlj dF0KPiA+ICAgIDU5OCB8ICAgICAgICAgICAgICAgICAgICAgICAgIGxlZHMtPmxlZFtyZWddLT5j ZGV2LmJyaWdodG5lc3Nfc2V0X2Jsb2NraW5nID0KPiA+ICAgICAgICB8ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4K PiA+ICAgIDU5OSB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIG10NjMyM193bGVkX3NldF9icmlnaHRuZXNzOwo+ID4gICAgICAgIHwgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn4KPiA+ICBkcml2ZXJzL2xlZHMvbGVkcy1tdDYzMjMuYzo2MDA6NDA6IGVycm9yOiBpbmNv bXBhdGlibGUgZnVuY3Rpb24gcG9pbnRlciB0eXBlcyBhc3NpZ25pbmcgdG8gJ2VudW0gbGVkX2Jy aWdodG5lc3MgKCopKHN0cnVjdCBsZWRfY2xhc3NkZXYgKiknIGZyb20gJ3Vuc2lnbmVkIGludCAo c3RydWN0IGxlZF9jbGFzc2RldiAqKScgWy1XZXJyb3IsLVdpbmNvbXBhdGlibGUtZnVuY3Rpb24t cG9pbnRlci10eXBlcy1zdHJpY3RdCj4gPiAgICA2MDAgfCAgICAgICAgICAgICAgICAgICAgICAg ICBsZWRzLT5sZWRbcmVnXS0+Y2Rldi5icmlnaHRuZXNzX2dldCA9Cj4gPiAgICAgICAgfCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBe Cj4gPiAgICA2MDEgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBtdDYzMjNfZ2V0X3dsZWRfYnJpZ2h0bmVzczsKPiA+ICAgICAgICB8ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+Cj4gPiAgMiBlcnJvcnMgZ2VuZXJhdGVkLgo+ID4KPiA+IFdoaWxlICd1bnNpZ25lZCBp bnQnIGlzIEFCSSBjb21wYXRpYmxlIHdpdGggJ2VudW0gbGVkX2JyaWdodG5lc3MnIChoZW5jZQo+ ID4gbm8gd2FybmluZyBmcm9tIC1XaW5jb21wYXRpYmxlLWZ1bmN0aW9uLXBvaW50ZXItdHlwZXMp IGFuZCB0aGUgY2FsbGVycwo+ID4gb2YgdGhlc2UgY2FsbGJhY2tzIHVzZS9wYXNzIHRoZSB2YWx1 ZXMgYXMgJ3Vuc2lnbmVkIGludCcsIHRoZSBtaXNtYXRjaAo+ID4gYmV0d2VlbiB0aGUgcHJvdG90 eXBlIGFuZCB0aGUgY2FsbGVkIGZ1bmN0aW9uIHdpbGwgdHJpcCBrQ0ZJIGF0IHJ1bnRpbWUuCj4g Pgo+ID4gQ2hhbmdlIHRoZSB0eXBlcyBpbiB0aGUgaW1wbGVtZW50YXRpb25zIHRvIG1hdGNoIHRo ZSBwcm90b3R5cGVzLCBjbGVhcmluZwo+ID4gdXAgdGhlIHdhcm5pbmcgYW5kIGF2b2lkaW5nIGtD RkkgZmFpbHVyZXMuCj4gPgo+ID4gRml4ZXM6IDliYjBhOWUwNjI2YyAoImxlZHM6IGxlZHMtbXQ2 MzIzOiBBZGQgc3VwcG9ydCBmb3IgV0xFRHMgYW5kIE1UNjMzMiIpCj4gPiBTaWduZWQtb2ZmLWJ5 OiBOYXRoYW4gQ2hhbmNlbGxvciA8bmF0aGFuQGtlcm5lbC5vcmc+Cj4gCj4gVGhhbmtzIGZvciB0 aGUgcGF0Y2ghIENvbnNpZGVyIGFkZGl0aW9uYWxseSBoYXZpbmcKPiBtdDYzMjNfZ2V0X3dsZWRf YnJpZ2h0bmVzcyByZXR1cm4gTEVEX09GRiByYXRoZXIgdGhhbiAwIGluIGl0cwo+IHRlcm5hcnku CgpodHRwczovL2VsaXhpci5ib290bGluLmNvbS9saW51eC9sYXRlc3Qvc291cmNlL2luY2x1ZGUv bGludXgvbGVkcy5oI0wzMgoKUGVyaGFwcyB0aGlzIGlzIG5vdCByZWxldmFudCBmb3IgdGhpcyBv bGRlciBkcml2ZXIgdGhvdWdoPwoKSSdkIHJlYWxseSBsaWtlIHNvbWUgbW9yZSBpbmZvcm1hdGlv biBmcm9tIFBhdmVsIG9uIHRoZSBoaXN0b3J5LgoKPiBSZXZpZXdlZC1ieTogTmljayBEZXNhdWxu aWVycyA8bmRlc2F1bG5pZXJzQGdvb2dsZS5jb20+Cj4gCj4gCj4gPiAtLS0KPiA+ICBkcml2ZXJz L2xlZHMvbGVkcy1tdDYzMjMuYyB8IDYgKysrLS0tCj4gPiAgMSBmaWxlIGNoYW5nZWQsIDMgaW5z ZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKPiA+Cj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9s ZWRzL2xlZHMtbXQ2MzIzLmMgYi9kcml2ZXJzL2xlZHMvbGVkcy1tdDYzMjMuYwo+ID4gaW5kZXgg ZThmZWNmYzJlOTBhLi4yNGYzNWJkYjU1ZmIgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2xlZHMv bGVkcy1tdDYzMjMuYwo+ID4gKysrIGIvZHJpdmVycy9sZWRzL2xlZHMtbXQ2MzIzLmMKPiA+IEBA IC03Niw3ICs3Niw3IEBAIHN0cnVjdCBtdDYzMjNfbGVkIHsKPiA+ICAgICAgICAgaW50ICAgICAg ICAgICAgICAgICAgICAgaWQ7Cj4gPiAgICAgICAgIHN0cnVjdCBtdDYzMjNfbGVkcyAgICAgICpw YXJlbnQ7Cj4gPiAgICAgICAgIHN0cnVjdCBsZWRfY2xhc3NkZXYgICAgIGNkZXY7Cj4gPiAtICAg ICAgIHVuc2lnbmVkIGludCAgICAgICAgICAgIGN1cnJlbnRfYnJpZ2h0bmVzczsKPiA+ICsgICAg ICAgZW51bSBsZWRfYnJpZ2h0bmVzcyAgICAgY3VycmVudF9icmlnaHRuZXNzOwo+ID4gIH07Cj4g Pgo+ID4gIC8qKgo+ID4gQEAgLTQ1MSw3ICs0NTEsNyBAQCBzdGF0aWMgaW50IG10a193bGVkX2h3 X29mZihzdHJ1Y3QgbGVkX2NsYXNzZGV2ICpjZGV2KQo+ID4gICAgICAgICByZXR1cm4gMDsKPiA+ ICB9Cj4gPgo+ID4gLXN0YXRpYyB1bnNpZ25lZCBpbnQgbXQ2MzIzX2dldF93bGVkX2JyaWdodG5l c3Moc3RydWN0IGxlZF9jbGFzc2RldiAqY2RldikKPiA+ICtzdGF0aWMgZW51bSBsZWRfYnJpZ2h0 bmVzcyBtdDYzMjNfZ2V0X3dsZWRfYnJpZ2h0bmVzcyhzdHJ1Y3QgbGVkX2NsYXNzZGV2ICpjZGV2 KQo+ID4gIHsKPiA+ICAgICAgICAgc3RydWN0IG10NjMyM19sZWQgKmxlZCA9IGNvbnRhaW5lcl9v ZihjZGV2LCBzdHJ1Y3QgbXQ2MzIzX2xlZCwgY2Rldik7Cj4gPiAgICAgICAgIHN0cnVjdCBtdDYz MjNfbGVkcyAqbGVkcyA9IGxlZC0+cGFyZW50Owo+ID4gQEAgLTQ3MSw3ICs0NzEsNyBAQCBzdGF0 aWMgdW5zaWduZWQgaW50IG10NjMyM19nZXRfd2xlZF9icmlnaHRuZXNzKHN0cnVjdCBsZWRfY2xh c3NkZXYgKmNkZXYpCj4gPiAgfQo+ID4KPiA+ICBzdGF0aWMgaW50IG10NjMyM193bGVkX3NldF9i cmlnaHRuZXNzKHN0cnVjdCBsZWRfY2xhc3NkZXYgKmNkZXYsCj4gPiAtICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBicmlnaHRuZXNzKQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtIGxlZF9icmlnaHRuZXNzIGJyaWdo dG5lc3MpCj4gPiAgewo+ID4gICAgICAgICBzdHJ1Y3QgbXQ2MzIzX2xlZCAqbGVkID0gY29udGFp bmVyX29mKGNkZXYsIHN0cnVjdCBtdDYzMjNfbGVkLCBjZGV2KTsKPiA+ICAgICAgICAgc3RydWN0 IG10NjMyM19sZWRzICpsZWRzID0gbGVkLT5wYXJlbnQ7Cj4gPgo+ID4gLS0tCj4gPiBiYXNlLWNv bW1pdDogN2JkOTMyZDlhZGJjYzVjNTM3MGQ5NjhiZGIwYjAwMzg1NjA2YmYzYQo+ID4gY2hhbmdl LWlkOiAyMDIzMDYyMS1tdDYzMjMtd2xlZC13aW5jb21wYXRpYmxlLWZ1bmN0aW9uLXBvaW50ZXIt dHlwZXMtc3RyaWN0LTMzNGYwNmQ5MmZmYgo+ID4KPiA+IEJlc3QgcmVnYXJkcywKPiA+IC0tCj4g PiBOYXRoYW4gQ2hhbmNlbGxvciA8bmF0aGFuQGtlcm5lbC5vcmc+Cj4gPgo+ID4KPiAKPiAKPiAt LSAKPiBUaGFua3MsCj4gfk5pY2sgRGVzYXVsbmllcnMKCi0tIApMZWUgSm9uZXMgW+adjueQvOaW r10KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4 LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFk Lm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFy bS1rZXJuZWwK