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 45906C678D4 for ; Thu, 2 Mar 2023 11:50:21 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229794AbjCBLuU (ORCPT ); Thu, 2 Mar 2023 06:50:20 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48158 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229449AbjCBLuT (ORCPT ); Thu, 2 Mar 2023 06:50:19 -0500 Received: from mail-wm1-x32d.google.com (mail-wm1-x32d.google.com [IPv6:2a00:1450:4864:20::32d]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3B19724C85 for ; Thu, 2 Mar 2023 03:50:16 -0800 (PST) Received: by mail-wm1-x32d.google.com with SMTP id l7-20020a05600c1d0700b003eb5e6d906bso1264559wms.5 for ; Thu, 02 Mar 2023 03:50:16 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1677757815; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=8acIAC1QMNW9bSy8G9hvKkEyiWl2pxcUpyySWrtwQLQ=; b=QmApKRnYpnL87hKpoI5GNQRdceku5L3e83OlkeHW+2cfKjl5XIJX2Mzm0o59Wkc44c aYnzt8SEb8wvMKSzDvC101Nj9k75ukMjUdSvEIZa0Goz7rkcDp4qozC/rBQ6g92Gi/Xn EXXgHBKIGrQRC4ha7dw8FikQAKToMkYan4e1opVeU3vtMCMwxHmGx1dlIRhICxUigEkY VaDh4DRI1UryydqibHp3g17Dftml2vodOfG/4KoFHeO1Glo5xvL7wAj8WGVmtJthZFAM 2HGKLy7XA4+I0r9ZR6f9ibFz3RWb4BFgrNPNN+DrNYGKzfKY8k/0yoTL9ZO8vgM38HbN E/mg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1677757815; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=8acIAC1QMNW9bSy8G9hvKkEyiWl2pxcUpyySWrtwQLQ=; b=7a17wGpDAAR3UmprUj/cmjp5PciD+j4kKdmNGEz816YGzkLOaLJCzXOdnhgMwhhlsb zMuK9LguwUhcKhqLAiAfUDKBjVpWkU6fBOV1i25n+Vma2Gv5KgcDBc9j2pMMi4EYQf5d TbDjH8VVWC2nd1svaR2qtn7Svte8PayI6szs9a0Kht4SBoGtXf0P3RMW863LEog5P8kB 1KZ25EI3bO9FsMmXmfqpV/XBnrCyCIT9YpFK81pLm5kP+xN/vIqSaW+d5p14Nm5oUfhv oTGLyOU9K1zGeNfRnJm2NTrHTIt7A5IWjSC6BUFi+tDbDM6mLlAPsDip92mq2rexFRLh 46Pg== X-Gm-Message-State: AO0yUKXgG4Zls+vNb2pNO3yniYLCVIcZLx+jpMzuMWcJuY6phVXKn4UQ QpBbqvRTXJCABM/C4WaHwi0= X-Google-Smtp-Source: AK7set9LPb/Cgh4PelrSMuwreUeZd+jcXRXnrIEh3EzM+gqmrsix5EiyhjirD7wtZhS6L/5WC8TzQQ== X-Received: by 2002:a05:600c:538b:b0:3eb:2b88:8682 with SMTP id hg11-20020a05600c538b00b003eb2b888682mr8305818wmb.17.1677757814662; Thu, 02 Mar 2023 03:50:14 -0800 (PST) Received: from [192.168.79.191] ([151.48.121.118]) by smtp.gmail.com with ESMTPSA id o11-20020a05600c4fcb00b003e8f0334db8sm3060884wmq.5.2023.03.02.03.50.13 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 02 Mar 2023 03:50:14 -0800 (PST) Message-ID: <6753125b-69cb-489a-4f5b-62c2285c9ba1@gmail.com> Date: Thu, 2 Mar 2023 12:50:13 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.7.1 Subject: Re: [PATCH 1/2] i2c: imx-lpi2c: clean rx/tx buffers upon new message Content-Language: en-US To: Alexander Stein , NXP Linux Team Cc: Pengutronix Kernel Team , linux-i2c@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Dong Aisheng , Shawn Guo , Sascha Hauer , Fabio Estevam , emanuele.ghidoli@toradex.com References: <20230130153247.445027-1-alexander.stein@ew.tq-group.com> <4d06ffe5-3ff6-241e-b35b-794c075f288e@gmail.com> <2672031.mvXUDI8C0e@steina-w> From: Emanuele Ghidoli In-Reply-To: <2672031.mvXUDI8C0e@steina-w> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-i2c@vger.kernel.org On 02/03/2023 12:15, Alexander Stein wrote: > Hi Emanuele, > > Am Donnerstag, 2. März 2023, 12:06:18 CET schrieb Emanuele Ghidoli: >> On 30/01/2023 16:32, Alexander Stein wrote: >>> When start sending a new message clear the Rx & Tx buffer pointers in >>> order to avoid using stale pointers. >>> >>> Signed-off-by: Alexander Stein >>> --- >>> I noticed an ambigous stack corruption once my rtc-pcf85063 driver probes. >>> >>> [ 2.695684] Kernel panic - not syncing: stack-protector: Kernel stack >>> is corrupted in: pcf85063_rtc_read_time+0x10/0x100 [ 2.706669] CPU: 1 >>> PID: 63 Comm: kworker/u8:2 Not tainted 6.2.0-rc6-next-20230130+ #1185 >>> ca067559321ae817c063baccdba80d328f10f73 [ 2.718331] Hardware name: >>> TQ-Systems i.MX8QXP TQMa8XQP on MBa8Xx (DT) [ 2.724866] Workqueue: >>> events_unbound deferred_probe_work_func >>> [ 2.730712] Call trace: >>> [ 2.733161] dump_backtrace+0x9c/0x11c >>> [ 2.736914] show_stack+0x14/0x1c >>> [ 2.740232] dump_stack_lvl+0x5c/0x78 >>> [ 2.743907] dump_stack+0x14/0x1c >>> [ 2.747225] panic+0x34c/0x39c >>> [ 2.750283] __ktime_get_real_seconds+0x0/0xc >>> [ 2.754653] pcf85063_ioctl+0x0/0xf0 >>> [ 2.758232] __rtc_read_time+0x44/0x114 >>> [ 2.762081] __rtc_read_alarm+0x258/0x460 >>> [ 2.766095] __devm_rtc_register_device+0x174/0x2b4 >>> [ 2.770986] pcf85063_probe+0x258/0x4d4 >>> [ 2.774825] i2c_device_probe+0x100/0x33c >>> >>> The backtrace did not indicate the actual cause of it. Checking the code >>> the RTC driver seemed to be ok, so it has to be in the i2c bus driver. At >>> some point I noticed that I see both Rx and Tx interrupts at the same >>> time, which is odd. Also both rx_buf and tx_buf was set simultaneously. >>> Clearly a bug to me. >>> Clearing the buffer pointers upon each new i2c message triggered a NULL >>> pointer dereference: >>> >>> [ 2.694923] Unable to handle kernel NULL pointer dereference at virtual >>> address 0000000000000001 [ 2.703730] Mem abort info: >>> [ 2.706525] ESR = 0x0000000096000004 >>> [ 2.710278] EC = 0x25: DABT (current EL), IL = 32 bits >>> [ 2.715595] SET = 0, FnV = 0 >>> [ 2.718653] EA = 0, S1PTW = 0 >>> [ 2.721798] FSC = 0x04: level 0 translation fault >>> [ 2.726680] Data abort info: >>> [ 2.729556] ISV = 0, ISS = 0x00000004 >>> [ 2.733387] CM = 0, WnR = 0 >>> [ 2.736358] [0000000000000001] user address but active_mm is swapper >>> [ 2.742719] Internal error: Oops: 0000000096000004 [#1] PREEMPT SMP >>> [ 2.748990] Modules linked in: >>> [ 2.752051] CPU: 0 PID: 0 Comm: swapper/0 Not tainted >>> 6.2.0-rc6-next-20230130+ #1184 44a8abebca6bfabc93e20ac52bce 47da7f92cec1 >>> [ 2.763368] Hardware name: TQ-Systems i.MX8QXP TQMa8XQP on MBa8Xx (DT) >>> [ 2.769902] pstate: 800000c5 (Nzcv daIF -PAN -UAO -TCO -DIT -SSBS >>> BTYPE=--) [ 2.776868] pc : lpi2c_imx_write_txfifo+0x44/0xb0 >>> [ 2.781585] lr : lpi2c_imx_isr+0x60/0x8c >>> [ 2.785512] sp : ffff800008003ef0 >>> [ 2.788831] x29: ffff800008003ef0 x28: ffff8000099c1ec0 x27: >>> 00000000bfe632c8 [ 2.795980] x26: 0000000000000000 x25: >>> ffff800009b935ed x24: ffff800009a4d4c0 [ 2.803130] x23: >>> ffff00000365e800 x22: 0000000000000128 x21: 0000000000000000 [ >>> 2.810280] x20: ffff0000033f4080 x19: 0000000003000103 x18: >>> 0000000000000000 [ 2.817430] x17: ffff80003688a000 x16: >>> ffff800008000000 x15: 0000000000000000 [ 2.824579] x14: >>> 0000000000000000 x13: ffff8000099d1db8 x12: 0000000000000000 [ >>> 2.831729] x11: ffff800009503180 x10: 0000000000000a80 x9 : >>> ffff8000099b3d20 [ 2.838879] x8 : ffff8000099c29a0 x7 : >>> 00000000000000c0 x6 : ffff000002838028 [ 2.846029] x5 : >>> 0000000000000002 x4 : 0000000000000000 x3 : 0000000000000000 [ >>> 2.849626] imx-scu system-controller: RPC send msg timeout >>> [ 2.853178] x2 : ffff800009c88060 x1 : 0000000000000001 x0 : >>> ffff0000033f4080 [ 2.858764] enet1: failed to power off resource 252 >>> ret -110 >>> [ 2.865897] Call trace: >>> [ 2.865901] lpi2c_imx_write_txfifo+0x44/0xb0 >>> [ 2.878443] __handle_irq_event_percpu+0x5c/0x188 >>> [ 2.883151] handle_irq_event+0x48/0xb0 >>> >>> $ ./scripts/faddr2line build_arm64/vmlinux >>> lpi2c_imx_write_txfifo+0x44/0xb0 >>> lpi2c_imx_write_txfifo+0x44/0xb0: >>> lpi2c_imx_write_txfifo at drivers/i2c/busses/i2c-imx-lpi2c.c:364 >>> >>> This now clearly pinpoints the wrong access which previously corrupted the >>> stack. The error leading to this wrong access is addressed in the >>> following patch. >>> >>> drivers/i2c/busses/i2c-imx-lpi2c.c | 2 ++ >>> 1 file changed, 2 insertions(+) >>> >>> diff --git a/drivers/i2c/busses/i2c-imx-lpi2c.c >>> b/drivers/i2c/busses/i2c-imx-lpi2c.c index 188f2a36d2fd..c6d0225246e6 >>> 100644 >>> --- a/drivers/i2c/busses/i2c-imx-lpi2c.c >>> +++ b/drivers/i2c/busses/i2c-imx-lpi2c.c >>> @@ -463,6 +463,8 @@ static int lpi2c_imx_xfer(struct i2c_adapter *adapter, >>> >>> if (num == 1 && msgs[0].len == 0) >>> >>> goto stop; >>> >>> + lpi2c_imx->rx_buf = NULL; >>> + lpi2c_imx->tx_buf = NULL; >>> >>> lpi2c_imx->delivered = 0; >>> lpi2c_imx->msglen = msgs[i].len; >>> init_completion(&lpi2c_imx->complete); >> >> Hello, >> I have same problem with rtc-ds1307 driver and NXP imx8x (using >> ic2-imx-lpi2c.c bus driver). I do not have the full stack trace but I'm >> sure is very similar: >> [ 10.750015] Kernel panic - not syncing: stack-protector: Kernel stack is >> corrupted in: ds1307_get_time+0x2a4/0x2c4 [rtc_ds1307] >> >> Your patches are fixing this too and they seem good to me. >> About the [2/2] patch your approach sound better to me than the downstream >> approach. >> >> Emanuele Ghidoli > > Thanks for the feedback. Could you provide then a Tested-by tag? > > Best regards, > Alexander > Yes, for sure tested and reviewed: Tested-by: Emanuele Ghidoli Best regards, Emanuele 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 AB335C6FA8E for ; Thu, 2 Mar 2023 11:51:21 +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-Type: Content-Transfer-Encoding:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:From:References:Cc:To:Subject: MIME-Version:Date:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=lAh+NDVNLKTxlUKseKBSNW3FDK0N3ivSfY2ivkFEsYo=; b=wBbvkACWg3PjsM x5w/Y/C/9+O06Ruy4XY1CV2QiPfg/CfBwcA77KDhwG7K6fUXFxS07c71wjz9+7oExLcNejmB8nMTK KZ5wYdchIKa7jo7CooW8GIY7uY878HyweONukQPULbRX7pDb0sOaw7ALcAsJfDnAnYHEDQSbS14iN ZTjruDciKSUnVsEDW7EYTXmldrHyt4XmKjq/VU0ZXFKtyZrpvYbCI9UiQgMVhe8HTdu22pkW0EL4p ZA400BSeGn1w2TE8cO8xfa5onPP7Td32ZHPEcHmQYwBJpihxbT41vB8c7YCGfH0B+TReg+XJP3geo R3Y2bHXne7g2OSCnHWUA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1pXhS2-0020MS-53; Thu, 02 Mar 2023 11:50:22 +0000 Received: from mail-wm1-x334.google.com ([2a00:1450:4864:20::334]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1pXhRy-0020Kx-Lb for linux-arm-kernel@lists.infradead.org; Thu, 02 Mar 2023 11:50:20 +0000 Received: by mail-wm1-x334.google.com with SMTP id l7-20020a05600c1d0700b003eb5e6d906bso1264560wms.5 for ; Thu, 02 Mar 2023 03:50:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1677757815; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=8acIAC1QMNW9bSy8G9hvKkEyiWl2pxcUpyySWrtwQLQ=; b=QmApKRnYpnL87hKpoI5GNQRdceku5L3e83OlkeHW+2cfKjl5XIJX2Mzm0o59Wkc44c aYnzt8SEb8wvMKSzDvC101Nj9k75ukMjUdSvEIZa0Goz7rkcDp4qozC/rBQ6g92Gi/Xn EXXgHBKIGrQRC4ha7dw8FikQAKToMkYan4e1opVeU3vtMCMwxHmGx1dlIRhICxUigEkY VaDh4DRI1UryydqibHp3g17Dftml2vodOfG/4KoFHeO1Glo5xvL7wAj8WGVmtJthZFAM 2HGKLy7XA4+I0r9ZR6f9ibFz3RWb4BFgrNPNN+DrNYGKzfKY8k/0yoTL9ZO8vgM38HbN E/mg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1677757815; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=8acIAC1QMNW9bSy8G9hvKkEyiWl2pxcUpyySWrtwQLQ=; b=cuK0sgXdSk2OEhN/0pewQoTTn5TKSPufjyI62hcAFU0SgQfGyqbL/3qAvfxsf3/iyf IJgDyx4JIrS2WnAQLE9X0ms/qncI6FvaCFsfyGw1dLvuaaI5LUd5zAxb4hEZfz0uJi4p QT9V79FtOHD/dt9tMbs9BE7psy/FsWMvrMhXwpi6GiIfKSnEXEwdLmcja6lVaicxPmfV sUo1cBAgwFS1QSXcBVQogtP1PvwVCQIASdrgKCFwrX6qUhoPsNvvRiBQn6TQhOGRmxO2 AWz7rjkn8jlkpFucqHFDGTlUVn+hF30HcLnRRSQrH922HHDaOX/AT0w8wwa4/2NktPsw mmzA== X-Gm-Message-State: AO0yUKUR70qQunPYtkkNAOaHoYU+8zGMrr3afb+wRxJzJsaj5MB/YGwx SK/sMZiYe/Eqqh6yoxQj/Uw= X-Google-Smtp-Source: AK7set9LPb/Cgh4PelrSMuwreUeZd+jcXRXnrIEh3EzM+gqmrsix5EiyhjirD7wtZhS6L/5WC8TzQQ== X-Received: by 2002:a05:600c:538b:b0:3eb:2b88:8682 with SMTP id hg11-20020a05600c538b00b003eb2b888682mr8305818wmb.17.1677757814662; Thu, 02 Mar 2023 03:50:14 -0800 (PST) Received: from [192.168.79.191] ([151.48.121.118]) by smtp.gmail.com with ESMTPSA id o11-20020a05600c4fcb00b003e8f0334db8sm3060884wmq.5.2023.03.02.03.50.13 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 02 Mar 2023 03:50:14 -0800 (PST) Message-ID: <6753125b-69cb-489a-4f5b-62c2285c9ba1@gmail.com> Date: Thu, 2 Mar 2023 12:50:13 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.7.1 Subject: Re: [PATCH 1/2] i2c: imx-lpi2c: clean rx/tx buffers upon new message Content-Language: en-US To: Alexander Stein , NXP Linux Team Cc: Pengutronix Kernel Team , linux-i2c@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Dong Aisheng , Shawn Guo , Sascha Hauer , Fabio Estevam , emanuele.ghidoli@toradex.com References: <20230130153247.445027-1-alexander.stein@ew.tq-group.com> <4d06ffe5-3ff6-241e-b35b-794c075f288e@gmail.com> <2672031.mvXUDI8C0e@steina-w> From: Emanuele Ghidoli In-Reply-To: <2672031.mvXUDI8C0e@steina-w> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230302_035018_751617_A1B08600 X-CRM114-Status: GOOD ( 23.14 ) 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-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org T24gMDIvMDMvMjAyMyAxMjoxNSwgQWxleGFuZGVyIFN0ZWluIHdyb3RlOgo+IEhpIEVtYW51ZWxl LAo+IAo+IEFtIERvbm5lcnN0YWcsIDIuIE3DpHJ6IDIwMjMsIDEyOjA2OjE4IENFVCBzY2hyaWVi IEVtYW51ZWxlIEdoaWRvbGk6Cj4+IE9uIDMwLzAxLzIwMjMgMTY6MzIsIEFsZXhhbmRlciBTdGVp biB3cm90ZToKPj4+IFdoZW4gc3RhcnQgc2VuZGluZyBhIG5ldyBtZXNzYWdlIGNsZWFyIHRoZSBS eCAmIFR4IGJ1ZmZlciBwb2ludGVycyBpbgo+Pj4gb3JkZXIgdG8gYXZvaWQgdXNpbmcgc3RhbGUg cG9pbnRlcnMuCj4+Pgo+Pj4gU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIFN0ZWluIDxhbGV4YW5k ZXIuc3RlaW5AZXcudHEtZ3JvdXAuY29tPgo+Pj4gLS0tCj4+PiBJIG5vdGljZWQgYW4gYW1iaWdv dXMgc3RhY2sgY29ycnVwdGlvbiBvbmNlIG15IHJ0Yy1wY2Y4NTA2MyBkcml2ZXIgcHJvYmVzLgo+ Pj4KPj4+IFsgICAgMi42OTU2ODRdIEtlcm5lbCBwYW5pYyAtIG5vdCBzeW5jaW5nOiBzdGFjay1w cm90ZWN0b3I6IEtlcm5lbCBzdGFjawo+Pj4gaXMgY29ycnVwdGVkIGluOiBwY2Y4NTA2M19ydGNf cmVhZF90aW1lKzB4MTAvMHgxMDAgWyAgICAyLjcwNjY2OV0gQ1BVOiAxCj4+PiBQSUQ6IDYzIENv bW06IGt3b3JrZXIvdTg6MiBOb3QgdGFpbnRlZCA2LjIuMC1yYzYtbmV4dC0yMDIzMDEzMCsgIzEx ODUKPj4+IGNhMDY3NTU5MzIxYWU4MTdjMDYzYmFjY2RiYTgwZDMyOGYxMGY3MyBbICAgIDIuNzE4 MzMxXSBIYXJkd2FyZSBuYW1lOgo+Pj4gVFEtU3lzdGVtcyBpLk1YOFFYUCBUUU1hOFhRUCBvbiBN QmE4WHggKERUKSBbICAgIDIuNzI0ODY2XSBXb3JrcXVldWU6Cj4+PiBldmVudHNfdW5ib3VuZCBk ZWZlcnJlZF9wcm9iZV93b3JrX2Z1bmMKPj4+IFsgICAgMi43MzA3MTJdIENhbGwgdHJhY2U6Cj4+ PiBbICAgIDIuNzMzMTYxXSAgZHVtcF9iYWNrdHJhY2UrMHg5Yy8weDExYwo+Pj4gWyAgICAyLjcz NjkxNF0gIHNob3dfc3RhY2srMHgxNC8weDFjCj4+PiBbICAgIDIuNzQwMjMyXSAgZHVtcF9zdGFj a19sdmwrMHg1Yy8weDc4Cj4+PiBbICAgIDIuNzQzOTA3XSAgZHVtcF9zdGFjaysweDE0LzB4MWMK Pj4+IFsgICAgMi43NDcyMjVdICBwYW5pYysweDM0Yy8weDM5Ywo+Pj4gWyAgICAyLjc1MDI4M10g IF9fa3RpbWVfZ2V0X3JlYWxfc2Vjb25kcysweDAvMHhjCj4+PiBbICAgIDIuNzU0NjUzXSAgcGNm ODUwNjNfaW9jdGwrMHgwLzB4ZjAKPj4+IFsgICAgMi43NTgyMzJdICBfX3J0Y19yZWFkX3RpbWUr MHg0NC8weDExNAo+Pj4gWyAgICAyLjc2MjA4MV0gIF9fcnRjX3JlYWRfYWxhcm0rMHgyNTgvMHg0 NjAKPj4+IFsgICAgMi43NjYwOTVdICBfX2Rldm1fcnRjX3JlZ2lzdGVyX2RldmljZSsweDE3NC8w eDJiNAo+Pj4gWyAgICAyLjc3MDk4Nl0gIHBjZjg1MDYzX3Byb2JlKzB4MjU4LzB4NGQ0Cj4+PiBb ICAgIDIuNzc0ODI1XSAgaTJjX2RldmljZV9wcm9iZSsweDEwMC8weDMzYwo+Pj4KPj4+IFRoZSBi YWNrdHJhY2UgZGlkIG5vdCBpbmRpY2F0ZSB0aGUgYWN0dWFsIGNhdXNlIG9mIGl0LiBDaGVja2lu ZyB0aGUgY29kZQo+Pj4gdGhlIFJUQyBkcml2ZXIgc2VlbWVkIHRvIGJlIG9rLCBzbyBpdCBoYXMg dG8gYmUgaW4gdGhlIGkyYyBidXMgZHJpdmVyLiBBdAo+Pj4gc29tZSBwb2ludCBJIG5vdGljZWQg dGhhdCBJIHNlZSBib3RoIFJ4IGFuZCBUeCBpbnRlcnJ1cHRzIGF0IHRoZSBzYW1lCj4+PiB0aW1l LCB3aGljaCBpcyBvZGQuIEFsc28gYm90aCByeF9idWYgYW5kIHR4X2J1ZiB3YXMgc2V0IHNpbXVs dGFuZW91c2x5Lgo+Pj4gQ2xlYXJseSBhIGJ1ZyB0byBtZS4KPj4+IENsZWFyaW5nIHRoZSBidWZm ZXIgcG9pbnRlcnMgdXBvbiBlYWNoIG5ldyBpMmMgbWVzc2FnZSB0cmlnZ2VyZWQgYSBOVUxMCj4+ PiBwb2ludGVyIGRlcmVmZXJlbmNlOgo+Pj4KPj4+IFsgICAgMi42OTQ5MjNdIFVuYWJsZSB0byBo YW5kbGUga2VybmVsIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSBhdCB2aXJ0dWFsCj4+PiBhZGRy ZXNzIDAwMDAwMDAwMDAwMDAwMDEgWyAgICAyLjcwMzczMF0gTWVtIGFib3J0IGluZm86Cj4+PiBb ICAgIDIuNzA2NTI1XSAgIEVTUiA9IDB4MDAwMDAwMDA5NjAwMDAwNAo+Pj4gWyAgICAyLjcxMDI3 OF0gICBFQyA9IDB4MjU6IERBQlQgKGN1cnJlbnQgRUwpLCBJTCA9IDMyIGJpdHMKPj4+IFsgICAg Mi43MTU1OTVdICAgU0VUID0gMCwgRm5WID0gMAo+Pj4gWyAgICAyLjcxODY1M10gICBFQSA9IDAs IFMxUFRXID0gMAo+Pj4gWyAgICAyLjcyMTc5OF0gICBGU0MgPSAweDA0OiBsZXZlbCAwIHRyYW5z bGF0aW9uIGZhdWx0Cj4+PiBbICAgIDIuNzI2NjgwXSBEYXRhIGFib3J0IGluZm86Cj4+PiBbICAg IDIuNzI5NTU2XSAgIElTViA9IDAsIElTUyA9IDB4MDAwMDAwMDQKPj4+IFsgICAgMi43MzMzODdd ICAgQ00gPSAwLCBXblIgPSAwCj4+PiBbICAgIDIuNzM2MzU4XSBbMDAwMDAwMDAwMDAwMDAwMV0g dXNlciBhZGRyZXNzIGJ1dCBhY3RpdmVfbW0gaXMgc3dhcHBlcgo+Pj4gWyAgICAyLjc0MjcxOV0g SW50ZXJuYWwgZXJyb3I6IE9vcHM6IDAwMDAwMDAwOTYwMDAwMDQgWyMxXSBQUkVFTVBUIFNNUAo+ Pj4gWyAgICAyLjc0ODk5MF0gTW9kdWxlcyBsaW5rZWQgaW46Cj4+PiBbICAgIDIuNzUyMDUxXSBD UFU6IDAgUElEOiAwIENvbW06IHN3YXBwZXIvMCBOb3QgdGFpbnRlZAo+Pj4gNi4yLjAtcmM2LW5l eHQtMjAyMzAxMzArICMxMTg0IDQ0YThhYmViY2E2YmZhYmM5M2UyMGFjNTJiY2UgNDdkYTdmOTJj ZWMxCj4+PiBbICAgIDIuNzYzMzY4XSBIYXJkd2FyZSBuYW1lOiBUUS1TeXN0ZW1zIGkuTVg4UVhQ IFRRTWE4WFFQIG9uIE1CYThYeCAoRFQpCj4+PiBbICAgIDIuNzY5OTAyXSBwc3RhdGU6IDgwMDAw MGM1IChOemN2IGRhSUYgLVBBTiAtVUFPIC1UQ08gLURJVCAtU1NCUwo+Pj4gQlRZUEU9LS0pIFsg ICAgMi43NzY4NjhdIHBjIDogbHBpMmNfaW14X3dyaXRlX3R4ZmlmbysweDQ0LzB4YjAKPj4+IFsg ICAgMi43ODE1ODVdIGxyIDogbHBpMmNfaW14X2lzcisweDYwLzB4OGMKPj4+IFsgICAgMi43ODU1 MTJdIHNwIDogZmZmZjgwMDAwODAwM2VmMAo+Pj4gWyAgICAyLjc4ODgzMV0geDI5OiBmZmZmODAw MDA4MDAzZWYwIHgyODogZmZmZjgwMDAwOTljMWVjMCB4Mjc6Cj4+PiAwMDAwMDAwMGJmZTYzMmM4 IFsgICAgMi43OTU5ODBdIHgyNjogMDAwMDAwMDAwMDAwMDAwMCB4MjU6Cj4+PiBmZmZmODAwMDA5 YjkzNWVkIHgyNDogZmZmZjgwMDAwOWE0ZDRjMCBbICAgIDIuODAzMTMwXSB4MjM6Cj4+PiBmZmZm MDAwMDAzNjVlODAwIHgyMjogMDAwMDAwMDAwMDAwMDEyOCB4MjE6IDAwMDAwMDAwMDAwMDAwMDAg Wwo+Pj4gMi44MTAyODBdIHgyMDogZmZmZjAwMDAwMzNmNDA4MCB4MTk6IDAwMDAwMDAwMDMwMDAx MDMgeDE4Ogo+Pj4gMDAwMDAwMDAwMDAwMDAwMCBbICAgIDIuODE3NDMwXSB4MTc6IGZmZmY4MDAw MzY4OGEwMDAgeDE2Ogo+Pj4gZmZmZjgwMDAwODAwMDAwMCB4MTU6IDAwMDAwMDAwMDAwMDAwMDAg WyAgICAyLjgyNDU3OV0geDE0Ogo+Pj4gMDAwMDAwMDAwMDAwMDAwMCB4MTM6IGZmZmY4MDAwMDk5 ZDFkYjggeDEyOiAwMDAwMDAwMDAwMDAwMDAwIFsKPj4+IDIuODMxNzI5XSB4MTE6IGZmZmY4MDAw MDk1MDMxODAgeDEwOiAwMDAwMDAwMDAwMDAwYTgwIHg5IDoKPj4+IGZmZmY4MDAwMDk5YjNkMjAg WyAgICAyLjgzODg3OV0geDggOiBmZmZmODAwMDA5OWMyOWEwIHg3IDoKPj4+IDAwMDAwMDAwMDAw MDAwYzAgeDYgOiBmZmZmMDAwMDAyODM4MDI4IFsgICAgMi44NDYwMjldIHg1IDoKPj4+IDAwMDAw MDAwMDAwMDAwMDIgeDQgOiAwMDAwMDAwMDAwMDAwMDAwIHgzIDogMDAwMDAwMDAwMDAwMDAwMCBb Cj4+PiAyLjg0OTYyNl0gaW14LXNjdSBzeXN0ZW0tY29udHJvbGxlcjogUlBDIHNlbmQgbXNnIHRp bWVvdXQKPj4+IFsgICAgMi44NTMxNzhdIHgyIDogZmZmZjgwMDAwOWM4ODA2MCB4MSA6IDAwMDAw MDAwMDAwMDAwMDEgeDAgOgo+Pj4gZmZmZjAwMDAwMzNmNDA4MCBbICAgIDIuODU4NzY0XSAgZW5l dDE6IGZhaWxlZCB0byBwb3dlciBvZmYgcmVzb3VyY2UgMjUyCj4+PiByZXQgLTExMAo+Pj4gWyAg ICAyLjg2NTg5N10gQ2FsbCB0cmFjZToKPj4+IFsgICAgMi44NjU5MDFdICBscGkyY19pbXhfd3Jp dGVfdHhmaWZvKzB4NDQvMHhiMAo+Pj4gWyAgICAyLjg3ODQ0M10gIF9faGFuZGxlX2lycV9ldmVu dF9wZXJjcHUrMHg1Yy8weDE4OAo+Pj4gWyAgICAyLjg4MzE1MV0gIGhhbmRsZV9pcnFfZXZlbnQr MHg0OC8weGIwCj4+Pgo+Pj4gJCAuL3NjcmlwdHMvZmFkZHIybGluZSBidWlsZF9hcm02NC92bWxp bnV4Cj4+PiBscGkyY19pbXhfd3JpdGVfdHhmaWZvKzB4NDQvMHhiMAo+Pj4gbHBpMmNfaW14X3dy aXRlX3R4ZmlmbysweDQ0LzB4YjA6Cj4+PiBscGkyY19pbXhfd3JpdGVfdHhmaWZvIGF0IGRyaXZl cnMvaTJjL2J1c3Nlcy9pMmMtaW14LWxwaTJjLmM6MzY0Cj4+Pgo+Pj4gVGhpcyBub3cgY2xlYXJs eSBwaW5wb2ludHMgdGhlIHdyb25nIGFjY2VzcyB3aGljaCBwcmV2aW91c2x5IGNvcnJ1cHRlZCB0 aGUKPj4+IHN0YWNrLiBUaGUgZXJyb3IgbGVhZGluZyB0byB0aGlzIHdyb25nIGFjY2VzcyBpcyBh ZGRyZXNzZWQgaW4gdGhlCj4+PiBmb2xsb3dpbmcgcGF0Y2guCj4+Pgo+Pj4gICAgZHJpdmVycy9p MmMvYnVzc2VzL2kyYy1pbXgtbHBpMmMuYyB8IDIgKysKPj4+ICAgIDEgZmlsZSBjaGFuZ2VkLCAy IGluc2VydGlvbnMoKykKPj4+Cj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9pMmMvYnVzc2VzL2ky Yy1pbXgtbHBpMmMuYwo+Pj4gYi9kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWlteC1scGkyYy5jIGlu ZGV4IDE4OGYyYTM2ZDJmZC4uYzZkMDIyNTI0NmU2Cj4+PiAxMDA2NDQKPj4+IC0tLSBhL2RyaXZl cnMvaTJjL2J1c3Nlcy9pMmMtaW14LWxwaTJjLmMKPj4+ICsrKyBiL2RyaXZlcnMvaTJjL2J1c3Nl cy9pMmMtaW14LWxwaTJjLmMKPj4+IEBAIC00NjMsNiArNDYzLDggQEAgc3RhdGljIGludCBscGky Y19pbXhfeGZlcihzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmFkYXB0ZXIsCj4+Pgo+Pj4gICAgCQlpZiAo bnVtID09IDEgJiYgbXNnc1swXS5sZW4gPT0gMCkKPj4+ICAgIAkJCj4+PiAgICAJCQlnb3RvIHN0 b3A7Cj4+Pgo+Pj4gKwkJbHBpMmNfaW14LT5yeF9idWYgPSBOVUxMOwo+Pj4gKwkJbHBpMmNfaW14 LT50eF9idWYgPSBOVUxMOwo+Pj4KPj4+ICAgIAkJbHBpMmNfaW14LT5kZWxpdmVyZWQgPSAwOwo+ Pj4gICAgCQlscGkyY19pbXgtPm1zZ2xlbiA9IG1zZ3NbaV0ubGVuOwo+Pj4gICAgCQlpbml0X2Nv bXBsZXRpb24oJmxwaTJjX2lteC0+Y29tcGxldGUpOwo+Pgo+PiBIZWxsbywKPj4gSSBoYXZlIHNh bWUgcHJvYmxlbSB3aXRoIHJ0Yy1kczEzMDcgZHJpdmVyIGFuZCBOWFAgaW14OHggKHVzaW5nCj4+ IGljMi1pbXgtbHBpMmMuYyBidXMgZHJpdmVyKS4gSSBkbyBub3QgaGF2ZSB0aGUgZnVsbCBzdGFj ayB0cmFjZSBidXQgSSdtCj4+IHN1cmUgaXMgdmVyeSBzaW1pbGFyOgo+PiBbICAgMTAuNzUwMDE1 XSBLZXJuZWwgcGFuaWMgLSBub3Qgc3luY2luZzogc3RhY2stcHJvdGVjdG9yOiBLZXJuZWwgc3Rh Y2sgaXMKPj4gY29ycnVwdGVkIGluOiBkczEzMDdfZ2V0X3RpbWUrMHgyYTQvMHgyYzQgW3J0Y19k czEzMDddCj4+Cj4+IFlvdXIgcGF0Y2hlcyBhcmUgZml4aW5nIHRoaXMgdG9vIGFuZCB0aGV5IHNl ZW0gZ29vZCB0byBtZS4KPj4gQWJvdXQgdGhlIFsyLzJdIHBhdGNoIHlvdXIgYXBwcm9hY2ggc291 bmQgYmV0dGVyIHRvIG1lIHRoYW4gdGhlIGRvd25zdHJlYW0KPj4gYXBwcm9hY2guCj4+Cj4+IEVt YW51ZWxlIEdoaWRvbGkKPiAKPiBUaGFua3MgZm9yIHRoZSBmZWVkYmFjay4gQ291bGQgeW91IHBy b3ZpZGUgdGhlbiBhIFRlc3RlZC1ieSB0YWc/Cj4gCj4gQmVzdCByZWdhcmRzLAo+IEFsZXhhbmRl cgo+IApZZXMsIGZvciBzdXJlIHRlc3RlZCBhbmQgcmV2aWV3ZWQ6ClRlc3RlZC1ieTogRW1hbnVl bGUgR2hpZG9saSA8ZW1hbnVlbGUuZ2hpZG9saUB0b3JhZGV4LmNvbT4KCkJlc3QgcmVnYXJkcywK RW1hbnVlbGUKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5m cmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xp bnV4LWFybS1rZXJuZWwK