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 8FD9AC64EC4 for ; Fri, 3 Mar 2023 07:21:25 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229494AbjCCHVY (ORCPT ); Fri, 3 Mar 2023 02:21:24 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53786 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229445AbjCCHVX (ORCPT ); Fri, 3 Mar 2023 02:21:23 -0500 Received: from mail-wm1-x335.google.com (mail-wm1-x335.google.com [IPv6:2a00:1450:4864:20::335]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 19FBD1ABDC for ; Thu, 2 Mar 2023 23:21:22 -0800 (PST) Received: by mail-wm1-x335.google.com with SMTP id j3so990995wms.2 for ; Thu, 02 Mar 2023 23:21:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1677828080; h=content-transfer-encoding:in-reply-to:references:cc:to:from :content-language:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=8MQLVyHbfVOZYN6zgY31RljZHbRaUH4TgGRwTrnUsjA=; b=MRq6hi5C3EXEvpoJjzPv6IRieUXz9WXIOhmrPK0fTIwjiWPku0pu1Zqz3YEVg3qDUH r2f81HPXk3FaFmT9MCMJt8zK2fg2LmOLuSPaAXXA61mqCrmDxysy9fIGeitC6mEzWKfb 6ano6exepaFDM/AQ2a7SNTT0g2Oga2SUy9QqoDjvTW9/h1pnYzGFRXmPS06lCKrfoy1/ HaGJ+Xcwc9ehzFH3e2GxTuhrd7oiIeKizka3ttLVERWKo2yh1Rw1GtsnCZ5w683I/VdV psa2D7BVx9O08Ws29EvRzZ7O2cujcwaXbgkVFCETscLq9Zjk2vRqh7DS+/d3tccbG3BC Ew7A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1677828080; h=content-transfer-encoding:in-reply-to:references:cc:to:from :content-language:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=8MQLVyHbfVOZYN6zgY31RljZHbRaUH4TgGRwTrnUsjA=; b=MTwLoovLoBzHEW8fe8aJ5tvmjcK9jAKNCJtkcQbYg5fY0HMqT05oXnRNdOMcCjW5Q+ a8u4CcqGkR1mIBciuBDQzmgdWuXf5ZQO/VjdjP4omPoAqjPEs2axTa3lBX12hXekVMCG q/BCBFgAycdtqgAKk/vClgieMMHYtax8GEhCpmPH5o7tg4A/tpyPWQWvOney/6k+8Prs xN1gjLR7BWrdKyAMwsbcWOizUAm8d+VHm7+wVD4mBGq/RicUfHguFAb6c/kKoA0SHBxz h1nCcF6touPd8jNnNdDgrYQkdEGQQfDwRxBtZXk75uLkqSUWvFC8HiIR9mcv8AIGLgp0 u/RA== X-Gm-Message-State: AO0yUKUZUklp4UflB03zwMbgAa3l56CenNV6h7JifQ4kJGMmeRqLJduT MsLo3oOUXS3+urRQyodK2ipR8Ti8AOVdf3Cg X-Google-Smtp-Source: AK7set8le86b49aQEZy5Egu60tyNJaZNg5q59rusaHtzi2919J0ZiStUS0YWz86W2LCUhTSEjo24fQ== X-Received: by 2002:a05:600c:1547:b0:3eb:3104:efe7 with SMTP id f7-20020a05600c154700b003eb3104efe7mr743374wmg.23.1677828080330; Thu, 02 Mar 2023 23:21:20 -0800 (PST) Received: from [192.168.79.191] ([151.48.121.118]) by smtp.gmail.com with ESMTPSA id j22-20020a05600c485600b003e203681b26sm1532429wmo.29.2023.03.02.23.21.19 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 02 Mar 2023 23:21:20 -0800 (PST) Message-ID: <4e87d4dc-dd42-5720-0f41-6c1191e26ae9@gmail.com> Date: Fri, 3 Mar 2023 08:21:19 +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 From: Emanuele Ghidoli 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 References: <20230130153247.445027-1-alexander.stein@ew.tq-group.com> <4d06ffe5-3ff6-241e-b35b-794c075f288e@gmail.com> In-Reply-To: <4d06ffe5-3ff6-241e-b35b-794c075f288e@gmail.com> 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:06, Emanuele Ghidoli wrote: > 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 > > > > Hello, maybe it is worth to tag also with "Fixes:"... I do not know if it was here from the first commit introducing the driver. 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 21C4AC64EC4 for ; Fri, 3 Mar 2023 07:22:32 +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:References:Cc:To:From: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=cehXeHyWHsiLuRVWYVYZHTwq6/h1xpxfvlMxGbPFoBc=; b=s981nLwpPt2MDD 5sMXaWCJw+8DEZ1fuVbBUyGCzuF5CXr0diuixSSijNTluk4o00quS9IYrlc3tXQE7H/m/RgJRVFdQ 38fZDS6UhloBFxYhyspC5+mGXoRSYQ9Bu68nBvgeXWqpLxA/58Iv+2AsChHjj9N4MgExuhzE+rjdF szmU543ySEe4fWPjUzfai3Ez+ilDDXo8yLvr57vCe3E3BKhNdXK5rwkQ/q0qWDJ6bRgmsVZIE93Ml EEiyU7J9ANlRqpsGof+BOV0KCfwOi99ZyDW22ATgKpUy/x0EQ22MZs1baoM5CiCKYsrYzeuvYcCn0 A9cc9IoG9sJrjmGvM6vQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1pXzjO-005DWX-9u; Fri, 03 Mar 2023 07:21:30 +0000 Received: from mail-wm1-x32e.google.com ([2a00:1450:4864:20::32e]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1pXzjK-005DVi-4h for linux-arm-kernel@lists.infradead.org; Fri, 03 Mar 2023 07:21:27 +0000 Received: by mail-wm1-x32e.google.com with SMTP id az36so995077wmb.1 for ; Thu, 02 Mar 2023 23:21:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1677828080; h=content-transfer-encoding:in-reply-to:references:cc:to:from :content-language:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=8MQLVyHbfVOZYN6zgY31RljZHbRaUH4TgGRwTrnUsjA=; b=MRq6hi5C3EXEvpoJjzPv6IRieUXz9WXIOhmrPK0fTIwjiWPku0pu1Zqz3YEVg3qDUH r2f81HPXk3FaFmT9MCMJt8zK2fg2LmOLuSPaAXXA61mqCrmDxysy9fIGeitC6mEzWKfb 6ano6exepaFDM/AQ2a7SNTT0g2Oga2SUy9QqoDjvTW9/h1pnYzGFRXmPS06lCKrfoy1/ HaGJ+Xcwc9ehzFH3e2GxTuhrd7oiIeKizka3ttLVERWKo2yh1Rw1GtsnCZ5w683I/VdV psa2D7BVx9O08Ws29EvRzZ7O2cujcwaXbgkVFCETscLq9Zjk2vRqh7DS+/d3tccbG3BC Ew7A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1677828080; h=content-transfer-encoding:in-reply-to:references:cc:to:from :content-language:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=8MQLVyHbfVOZYN6zgY31RljZHbRaUH4TgGRwTrnUsjA=; b=7Y/RFAy/FXTXby7adSW57h+rSJX5JZgo0qluquNBGDxIgGcm4S1UdfJUDiJAttTV8H 6wn2tk1OrUXKQ1RHhK0+TBj3MUpyeE1C9iFlwtIIvGPWf8j4bX3Si5ix6d/qTto8OxXy 10r/MHYiiG1E3cgqNyxuAtmC4ExetUdW0yVZXj7rLb1OTIKoYk9HKbSAGPfUd1KReI09 5+VyTyue5j7619dw4Ee3qroRJ5QvA39PKqnzg8+d1vqEox49+tLS7Rc3yxq/f3LXEHd4 cwv8H/QOFUIrGpH9H+m/ATfGrbalxVhn+kbMbIA9miiN6BTY1NiLKrVE5TqXFV4ljuTH HCjw== X-Gm-Message-State: AO0yUKWrIrhzV+eQNNvd2uvPWgRIqUfP8UcBUG7lqBERD+nnDSPX6u/A dhtYTOYKhLYWiBW9ONRSULo= X-Google-Smtp-Source: AK7set8le86b49aQEZy5Egu60tyNJaZNg5q59rusaHtzi2919J0ZiStUS0YWz86W2LCUhTSEjo24fQ== X-Received: by 2002:a05:600c:1547:b0:3eb:3104:efe7 with SMTP id f7-20020a05600c154700b003eb3104efe7mr743374wmg.23.1677828080330; Thu, 02 Mar 2023 23:21:20 -0800 (PST) Received: from [192.168.79.191] ([151.48.121.118]) by smtp.gmail.com with ESMTPSA id j22-20020a05600c485600b003e203681b26sm1532429wmo.29.2023.03.02.23.21.19 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 02 Mar 2023 23:21:20 -0800 (PST) Message-ID: <4e87d4dc-dd42-5720-0f41-6c1191e26ae9@gmail.com> Date: Fri, 3 Mar 2023 08:21:19 +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 From: Emanuele Ghidoli 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 References: <20230130153247.445027-1-alexander.stein@ew.tq-group.com> <4d06ffe5-3ff6-241e-b35b-794c075f288e@gmail.com> In-Reply-To: <4d06ffe5-3ff6-241e-b35b-794c075f288e@gmail.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230302_232126_263863_2213861D X-CRM114-Status: GOOD ( 24.66 ) 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 T24gMDIvMDMvMjAyMyAxMjowNiwgRW1hbnVlbGUgR2hpZG9saSB3cm90ZToKPiBPbiAzMC8wMS8y MDIzIDE2OjMyLCBBbGV4YW5kZXIgU3RlaW4gd3JvdGU6Cj4+IFdoZW4gc3RhcnQgc2VuZGluZyBh IG5ldyBtZXNzYWdlIGNsZWFyIHRoZSBSeCAmIFR4IGJ1ZmZlciBwb2ludGVycyBpbgo+PiBvcmRl ciB0byBhdm9pZCB1c2luZyBzdGFsZSBwb2ludGVycy4KPj4KPj4gU2lnbmVkLW9mZi1ieTogQWxl eGFuZGVyIFN0ZWluIDxhbGV4YW5kZXIuc3RlaW5AZXcudHEtZ3JvdXAuY29tPgo+PiAtLS0KPj4g SSBub3RpY2VkIGFuIGFtYmlnb3VzIHN0YWNrIGNvcnJ1cHRpb24gb25jZSBteSBydGMtcGNmODUw NjMgZHJpdmVyIHByb2Jlcy4KPj4KPj4gW8KgwqDCoCAyLjY5NTY4NF0gS2VybmVsIHBhbmljIC0g bm90IHN5bmNpbmc6IHN0YWNrLXByb3RlY3RvcjogS2VybmVsIHN0YWNrIGlzIGNvcnJ1cHRlZCBp bjogcGNmODUwNjNfcnRjX3JlYWRfdGltZSsweDEwLzB4MTAwCj4+IFvCoMKgwqAgMi43MDY2Njld IENQVTogMSBQSUQ6IDYzIENvbW06IGt3b3JrZXIvdTg6MiBOb3QgdGFpbnRlZCA2LjIuMC1yYzYt bmV4dC0yMDIzMDEzMCsgIzExODUgY2EwNjc1NTkzMjFhZTgxN2MwNjNiYWNjZGJhODBkMzI4ZjEw ZjczCj4+IFvCoMKgwqAgMi43MTgzMzFdIEhhcmR3YXJlIG5hbWU6IFRRLVN5c3RlbXMgaS5NWDhR WFAgVFFNYThYUVAgb24gTUJhOFh4IChEVCkKPj4gW8KgwqDCoCAyLjcyNDg2Nl0gV29ya3F1ZXVl OiBldmVudHNfdW5ib3VuZCBkZWZlcnJlZF9wcm9iZV93b3JrX2Z1bmMKPj4gW8KgwqDCoCAyLjcz MDcxMl0gQ2FsbCB0cmFjZToKPj4gW8KgwqDCoCAyLjczMzE2MV3CoCBkdW1wX2JhY2t0cmFjZSsw eDljLzB4MTFjCj4+IFvCoMKgwqAgMi43MzY5MTRdwqAgc2hvd19zdGFjaysweDE0LzB4MWMKPj4g W8KgwqDCoCAyLjc0MDIzMl3CoCBkdW1wX3N0YWNrX2x2bCsweDVjLzB4NzgKPj4gW8KgwqDCoCAy Ljc0MzkwN13CoCBkdW1wX3N0YWNrKzB4MTQvMHgxYwo+PiBbwqDCoMKgIDIuNzQ3MjI1XcKgIHBh bmljKzB4MzRjLzB4MzljCj4+IFvCoMKgwqAgMi43NTAyODNdwqAgX19rdGltZV9nZXRfcmVhbF9z ZWNvbmRzKzB4MC8weGMKPj4gW8KgwqDCoCAyLjc1NDY1M13CoCBwY2Y4NTA2M19pb2N0bCsweDAv MHhmMAo+PiBbwqDCoMKgIDIuNzU4MjMyXcKgIF9fcnRjX3JlYWRfdGltZSsweDQ0LzB4MTE0Cj4+ IFvCoMKgwqAgMi43NjIwODFdwqAgX19ydGNfcmVhZF9hbGFybSsweDI1OC8weDQ2MAo+PiBbwqDC oMKgIDIuNzY2MDk1XcKgIF9fZGV2bV9ydGNfcmVnaXN0ZXJfZGV2aWNlKzB4MTc0LzB4MmI0Cj4+ IFvCoMKgwqAgMi43NzA5ODZdwqAgcGNmODUwNjNfcHJvYmUrMHgyNTgvMHg0ZDQKPj4gW8KgwqDC oCAyLjc3NDgyNV3CoCBpMmNfZGV2aWNlX3Byb2JlKzB4MTAwLzB4MzNjCj4+Cj4+IFRoZSBiYWNr dHJhY2UgZGlkIG5vdCBpbmRpY2F0ZSB0aGUgYWN0dWFsIGNhdXNlIG9mIGl0LiBDaGVja2luZyB0 aGUgY29kZSB0aGUKPj4gUlRDIGRyaXZlciBzZWVtZWQgdG8gYmUgb2ssIHNvIGl0IGhhcyB0byBi ZSBpbiB0aGUgaTJjIGJ1cyBkcml2ZXIuCj4+IEF0IHNvbWUgcG9pbnQgSSBub3RpY2VkIHRoYXQg SSBzZWUgYm90aCBSeCBhbmQgVHggaW50ZXJydXB0cyBhdCB0aGUgc2FtZSB0aW1lLAo+PiB3aGlj aCBpcyBvZGQuIEFsc28gYm90aCByeF9idWYgYW5kIHR4X2J1ZiB3YXMgc2V0IHNpbXVsdGFuZW91 c2x5LiBDbGVhcmx5Cj4+IGEgYnVnIHRvIG1lLgo+PiBDbGVhcmluZyB0aGUgYnVmZmVyIHBvaW50 ZXJzIHVwb24gZWFjaCBuZXcgaTJjIG1lc3NhZ2UgdHJpZ2dlcmVkIGEgTlVMTAo+PiBwb2ludGVy IGRlcmVmZXJlbmNlOgo+Pgo+PiBbwqDCoMKgIDIuNjk0OTIzXSBVbmFibGUgdG8gaGFuZGxlIGtl cm5lbCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UgYXQgdmlydHVhbCBhZGRyZXNzIDAwMDAwMDAw MDAwMDAwMDEKPj4gW8KgwqDCoCAyLjcwMzczMF0gTWVtIGFib3J0IGluZm86Cj4+IFvCoMKgwqAg Mi43MDY1MjVdwqDCoCBFU1IgPSAweDAwMDAwMDAwOTYwMDAwMDQKPj4gW8KgwqDCoCAyLjcxMDI3 OF3CoMKgIEVDID0gMHgyNTogREFCVCAoY3VycmVudCBFTCksIElMID0gMzIgYml0cwo+PiBbwqDC oMKgIDIuNzE1NTk1XcKgwqAgU0VUID0gMCwgRm5WID0gMAo+PiBbwqDCoMKgIDIuNzE4NjUzXcKg wqAgRUEgPSAwLCBTMVBUVyA9IDAKPj4gW8KgwqDCoCAyLjcyMTc5OF3CoMKgIEZTQyA9IDB4MDQ6 IGxldmVsIDAgdHJhbnNsYXRpb24gZmF1bHQKPj4gW8KgwqDCoCAyLjcyNjY4MF0gRGF0YSBhYm9y dCBpbmZvOgo+PiBbwqDCoMKgIDIuNzI5NTU2XcKgwqAgSVNWID0gMCwgSVNTID0gMHgwMDAwMDAw NAo+PiBbwqDCoMKgIDIuNzMzMzg3XcKgwqAgQ00gPSAwLCBXblIgPSAwCj4+IFvCoMKgwqAgMi43 MzYzNThdIFswMDAwMDAwMDAwMDAwMDAxXSB1c2VyIGFkZHJlc3MgYnV0IGFjdGl2ZV9tbSBpcyBz d2FwcGVyCj4+IFvCoMKgwqAgMi43NDI3MTldIEludGVybmFsIGVycm9yOiBPb3BzOiAwMDAwMDAw MDk2MDAwMDA0IFsjMV0gUFJFRU1QVCBTTVAKPj4gW8KgwqDCoCAyLjc0ODk5MF0gTW9kdWxlcyBs aW5rZWQgaW46Cj4+IFvCoMKgwqAgMi43NTIwNTFdIENQVTogMCBQSUQ6IDAgQ29tbTogc3dhcHBl ci8wIE5vdCB0YWludGVkIDYuMi4wLXJjNi1uZXh0LTIwMjMwMTMwKyAjMTE4NCA0NGE4YWJlYmNh NmJmYWJjOTNlMjBhYzUyYmNlCj4+IDQ3ZGE3ZjkyY2VjMQo+PiBbwqDCoMKgIDIuNzYzMzY4XSBI YXJkd2FyZSBuYW1lOiBUUS1TeXN0ZW1zIGkuTVg4UVhQIFRRTWE4WFFQIG9uIE1CYThYeCAoRFQp Cj4+IFvCoMKgwqAgMi43Njk5MDJdIHBzdGF0ZTogODAwMDAwYzUgKE56Y3YgZGFJRiAtUEFOIC1V QU8gLVRDTyAtRElUIC1TU0JTIEJUWVBFPS0tKQo+PiBbwqDCoMKgIDIuNzc2ODY4XSBwYyA6IGxw aTJjX2lteF93cml0ZV90eGZpZm8rMHg0NC8weGIwCj4+IFvCoMKgwqAgMi43ODE1ODVdIGxyIDog bHBpMmNfaW14X2lzcisweDYwLzB4OGMKPj4gW8KgwqDCoCAyLjc4NTUxMl0gc3AgOiBmZmZmODAw MDA4MDAzZWYwCj4+IFvCoMKgwqAgMi43ODg4MzFdIHgyOTogZmZmZjgwMDAwODAwM2VmMCB4Mjg6 IGZmZmY4MDAwMDk5YzFlYzAgeDI3OiAwMDAwMDAwMGJmZTYzMmM4Cj4+IFvCoMKgwqAgMi43OTU5 ODBdIHgyNjogMDAwMDAwMDAwMDAwMDAwMCB4MjU6IGZmZmY4MDAwMDliOTM1ZWQgeDI0OiBmZmZm ODAwMDA5YTRkNGMwCj4+IFvCoMKgwqAgMi44MDMxMzBdIHgyMzogZmZmZjAwMDAwMzY1ZTgwMCB4 MjI6IDAwMDAwMDAwMDAwMDAxMjggeDIxOiAwMDAwMDAwMDAwMDAwMDAwCj4+IFvCoMKgwqAgMi44 MTAyODBdIHgyMDogZmZmZjAwMDAwMzNmNDA4MCB4MTk6IDAwMDAwMDAwMDMwMDAxMDMgeDE4OiAw MDAwMDAwMDAwMDAwMDAwCj4+IFvCoMKgwqAgMi44MTc0MzBdIHgxNzogZmZmZjgwMDAzNjg4YTAw MCB4MTY6IGZmZmY4MDAwMDgwMDAwMDAgeDE1OiAwMDAwMDAwMDAwMDAwMDAwCj4+IFvCoMKgwqAg Mi44MjQ1NzldIHgxNDogMDAwMDAwMDAwMDAwMDAwMCB4MTM6IGZmZmY4MDAwMDk5ZDFkYjggeDEy OiAwMDAwMDAwMDAwMDAwMDAwCj4+IFvCoMKgwqAgMi44MzE3MjldIHgxMTogZmZmZjgwMDAwOTUw MzE4MCB4MTA6IDAwMDAwMDAwMDAwMDBhODAgeDkgOiBmZmZmODAwMDA5OWIzZDIwCj4+IFvCoMKg wqAgMi44Mzg4NzldIHg4IDogZmZmZjgwMDAwOTljMjlhMCB4NyA6IDAwMDAwMDAwMDAwMDAwYzAg eDYgOiBmZmZmMDAwMDAyODM4MDI4Cj4+IFvCoMKgwqAgMi44NDYwMjldIHg1IDogMDAwMDAwMDAw MDAwMDAwMiB4NCA6IDAwMDAwMDAwMDAwMDAwMDAgeDMgOiAwMDAwMDAwMDAwMDAwMDAwCj4+IFvC oMKgwqAgMi44NDk2MjZdIGlteC1zY3Ugc3lzdGVtLWNvbnRyb2xsZXI6IFJQQyBzZW5kIG1zZyB0 aW1lb3V0Cj4+IFvCoMKgwqAgMi44NTMxNzhdIHgyIDogZmZmZjgwMDAwOWM4ODA2MCB4MSA6IDAw MDAwMDAwMDAwMDAwMDEgeDAgOiBmZmZmMDAwMDAzM2Y0MDgwCj4+IFvCoMKgwqAgMi44NTg3NjRd wqAgZW5ldDE6IGZhaWxlZCB0byBwb3dlciBvZmYgcmVzb3VyY2UgMjUyIHJldCAtMTEwCj4+IFvC oMKgwqAgMi44NjU4OTddIENhbGwgdHJhY2U6Cj4+IFvCoMKgwqAgMi44NjU5MDFdwqAgbHBpMmNf aW14X3dyaXRlX3R4ZmlmbysweDQ0LzB4YjAKPj4gW8KgwqDCoCAyLjg3ODQ0M13CoCBfX2hhbmRs ZV9pcnFfZXZlbnRfcGVyY3B1KzB4NWMvMHgxODgKPj4gW8KgwqDCoCAyLjg4MzE1MV3CoCBoYW5k bGVfaXJxX2V2ZW50KzB4NDgvMHhiMAo+Pgo+PiAkIC4vc2NyaXB0cy9mYWRkcjJsaW5lIGJ1aWxk X2FybTY0L3ZtbGludXggbHBpMmNfaW14X3dyaXRlX3R4ZmlmbysweDQ0LzB4YjAKPj4gbHBpMmNf aW14X3dyaXRlX3R4ZmlmbysweDQ0LzB4YjA6Cj4+IGxwaTJjX2lteF93cml0ZV90eGZpZm8gYXQg ZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1pbXgtbHBpMmMuYzozNjQKPj4KPj4gVGhpcyBub3cgY2xl YXJseSBwaW5wb2ludHMgdGhlIHdyb25nIGFjY2VzcyB3aGljaCBwcmV2aW91c2x5IGNvcnJ1cHRl ZCB0aGUKPj4gc3RhY2suIFRoZSBlcnJvciBsZWFkaW5nIHRvIHRoaXMgd3JvbmcgYWNjZXNzIGlz IGFkZHJlc3NlZCBpbiB0aGUKPj4gZm9sbG93aW5nIHBhdGNoLgo+Pgo+PiDCoCBkcml2ZXJzL2ky Yy9idXNzZXMvaTJjLWlteC1scGkyYy5jIHwgMiArKwo+PiDCoCAxIGZpbGUgY2hhbmdlZCwgMiBp bnNlcnRpb25zKCspCj4+Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWlt eC1scGkyYy5jIGIvZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1pbXgtbHBpMmMuYwo+PiBpbmRleCAx ODhmMmEzNmQyZmQuLmM2ZDAyMjUyNDZlNiAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9pMmMvYnVz c2VzL2kyYy1pbXgtbHBpMmMuYwo+PiArKysgYi9kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWlteC1s cGkyYy5jCj4+IEBAIC00NjMsNiArNDYzLDggQEAgc3RhdGljIGludCBscGkyY19pbXhfeGZlcihz dHJ1Y3QgaTJjX2FkYXB0ZXIgKmFkYXB0ZXIsCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAobnVt ID09IDEgJiYgbXNnc1swXS5sZW4gPT0gMCkKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg Z290byBzdG9wOwo+PiArwqDCoMKgwqDCoMKgwqAgbHBpMmNfaW14LT5yeF9idWYgPSBOVUxMOwo+ PiArwqDCoMKgwqDCoMKgwqAgbHBpMmNfaW14LT50eF9idWYgPSBOVUxMOwo+PiDCoMKgwqDCoMKg wqDCoMKgwqAgbHBpMmNfaW14LT5kZWxpdmVyZWQgPSAwOwo+PiDCoMKgwqDCoMKgwqDCoMKgwqAg bHBpMmNfaW14LT5tc2dsZW4gPSBtc2dzW2ldLmxlbjsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIGlu aXRfY29tcGxldGlvbigmbHBpMmNfaW14LT5jb21wbGV0ZSk7Cj4gCj4gSGVsbG8sCj4gSSBoYXZl IHNhbWUgcHJvYmxlbSB3aXRoIHJ0Yy1kczEzMDcgZHJpdmVyIGFuZCBOWFAgaW14OHggKHVzaW5n IGljMi1pbXgtbHBpMmMuYyBidXMgZHJpdmVyKS4KPiBJIGRvIG5vdCBoYXZlIHRoZSBmdWxsIHN0 YWNrIHRyYWNlIGJ1dCBJJ20gc3VyZSBpcyB2ZXJ5IHNpbWlsYXI6Cj4gW8KgwqAgMTAuNzUwMDE1 XSBLZXJuZWwgcGFuaWMgLSBub3Qgc3luY2luZzogc3RhY2stcHJvdGVjdG9yOiBLZXJuZWwgc3Rh Y2sgaXMgY29ycnVwdGVkIGluOiBkczEzMDdfZ2V0X3RpbWUrMHgyYTQvMHgyYzQgW3J0Y19kczEz MDddCj4gCj4gWW91ciBwYXRjaGVzIGFyZSBmaXhpbmcgdGhpcyB0b28gYW5kIHRoZXkgc2VlbSBn b29kIHRvIG1lLgo+IEFib3V0IHRoZSBbMi8yXSBwYXRjaCB5b3VyIGFwcHJvYWNoIHNvdW5kIGJl dHRlciB0byBtZSB0aGFuIHRoZSBkb3duc3RyZWFtIGFwcHJvYWNoLgo+IAo+IEVtYW51ZWxlIEdo aWRvbGkKPiAKPiAKPiAKPiAKSGVsbG8sCm1heWJlIGl0IGlzIHdvcnRoIHRvIHRhZyBhbHNvIHdp dGggIkZpeGVzOiIuLi4gSSBkbyBub3Qga25vdyBpZiBpdCB3YXMgaGVyZSBmcm9tIHRoZSBmaXJz dCBjb21taXQgaW50cm9kdWNpbmcgdGhlIGRyaXZlci4KCkJlc3QgcmVnYXJkcywKCkVtYW51ZWxl CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1h cm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5v cmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0t a2VybmVsCg==