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=-11.1 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED 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 EDFDCC433DF for ; Thu, 27 Aug 2020 20:06:31 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id BC5D620848 for ; Thu, 27 Aug 2020 20:06:31 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1598558791; bh=4/XNRU5rKAtpaXdhI/CFjAMslEaB+vEKDey8nNOsVTQ=; h=Date:From:To:Cc:Subject:In-Reply-To:References:List-ID:From; b=vZbZL8eBDY8faK1CqOGYJdau/66aHBEOKxFZP+9I7pF7ZqGZStbQmY+/1Be8Dh8jf YjkePOd3c6LvrrpV5aJC7OPs4D4NbE8BW6PbOYrj7K7WGlMU3k2Guv+RVMPH0/4CiH xCsRyrS+6nIwVL2BSOvJvDyY/lFqjBRHazuAcwes= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726307AbgH0UGb (ORCPT ); Thu, 27 Aug 2020 16:06:31 -0400 Received: from mail.kernel.org ([198.145.29.99]:54638 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726120AbgH0UGa (ORCPT ); Thu, 27 Aug 2020 16:06:30 -0400 Received: from disco-boy.misterjones.org (disco-boy.misterjones.org [51.254.78.96]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id F19A220737; Thu, 27 Aug 2020 20:06:28 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1598558789; bh=4/XNRU5rKAtpaXdhI/CFjAMslEaB+vEKDey8nNOsVTQ=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=Okue3pjoa1k0VitmvfJa/ru6HzEhtAppffFkKj+MGoBZhxioOa7Ybk7t1e8cXONKE lD/uIXlH0VL6oXQhRJoQwqdpAM/e0XqnXVrTuOs1la3i1ZnNWiUCJ1CJyn5G7n5lPB NiAJ6S01t4j1E4vxyjDCL98261R7nmq+AhouY/p8= Received: from disco-boy.misterjones.org ([51.254.78.96] helo=www.loen.fr) by disco-boy.misterjones.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1kBOAF-007F0X-2e; Thu, 27 Aug 2020 21:06:27 +0100 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Date: Thu, 27 Aug 2020 21:06:26 +0100 From: Marc Zyngier To: Suman Anna Cc: Lee Jones , Arnd Bergmann , Grzegorz Jaszczyk , David Lechner , Tony Lindgren , linux-kernel@vger.kernel.org, linux-omap@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Roger Quadros , kernel-team@android.com Subject: Re: [RESEND PATCH v2] mfd: syscon: Use a unique name with regmap_config In-Reply-To: <74bc1f9f-cc48-cec9-85f4-3376b66b40fc@ti.com> References: <20200727211008.24225-1-s-anna@ti.com> <0c1feaf91b9d285c1bded488437705da@misterjones.org> <74bc1f9f-cc48-cec9-85f4-3376b66b40fc@ti.com> User-Agent: Roundcube Webmail/1.4.8 Message-ID: <78b465b080772b6ba867e39a623c2310@kernel.org> X-Sender: maz@kernel.org X-SA-Exim-Connect-IP: 51.254.78.96 X-SA-Exim-Rcpt-To: s-anna@ti.com, lee.jones@linaro.org, arnd@arndb.de, grzegorz.jaszczyk@linaro.org, david@lechnology.com, tony@atomide.com, linux-kernel@vger.kernel.org, linux-omap@vger.kernel.org, linux-arm-kernel@lists.infradead.org, rogerq@ti.com, kernel-team@android.com X-SA-Exim-Mail-From: maz@kernel.org X-SA-Exim-Scanned: No (on disco-boy.misterjones.org); SAEximRunCond expanded to false Sender: linux-omap-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-omap@vger.kernel.org Hi Suman, On 2020-08-27 19:28, Suman Anna wrote: > Hi Marc, > > On 8/27/20 9:46 AM, Marc Zyngier wrote: >> Hi all, >> >> On 2020-07-27 22:10, Suman Anna wrote: >>> The DT node full name is currently being used in regmap_config >>> which in turn is used to create the regmap debugfs directories. >>> This name however is not guaranteed to be unique and the regmap >>> debugfs registration can fail in the cases where the syscon nodes >>> have the same unit-address but are present in different DT node >>> hierarchies. Replace this logic using the syscon reg resource >>> address instead (inspired from logic used while creating platform >>> devices) to ensure a unique name is given for each syscon. >>> >>> Signed-off-by: Suman Anna >>> --- >>> Hi Arnd, >>> Lee is looking for your review on this patch. Can you please >>> review and provide your comments. >>> >>> This is a resend of the patch that was posted previously, rebased >>> now onto latest kernel. >>> >>> v2: https://patchwork.kernel.org/patch/11353355/ >>>  - Fix build warning reported by kbuild test bot >>> v1: https://patchwork.kernel.org/patch/11346363/ >>> >>>  drivers/mfd/syscon.c | 4 +++- >>>  1 file changed, 3 insertions(+), 1 deletion(-) >>> >>> diff --git a/drivers/mfd/syscon.c b/drivers/mfd/syscon.c >>> index 3a97816d0cba..75859e492984 100644 >>> --- a/drivers/mfd/syscon.c >>> +++ b/drivers/mfd/syscon.c >>> @@ -101,12 +101,14 @@ static struct syscon *of_syscon_register(struct >>> device_node *np, bool check_clk) >>>          } >>>      } >>> >>> -    syscon_config.name = of_node_full_name(np); >>> +    syscon_config.name = kasprintf(GFP_KERNEL, "%pOFn@%llx", np, >>> +                       (u64)res.start); >>>      syscon_config.reg_stride = reg_io_width; >>>      syscon_config.val_bits = reg_io_width * 8; >>>      syscon_config.max_register = resource_size(&res) - reg_io_width; >>> >>>      regmap = regmap_init_mmio(NULL, base, &syscon_config); >>> +    kfree(syscon_config.name); >>>      if (IS_ERR(regmap)) { >>>          pr_err("regmap init failed\n"); >>>          ret = PTR_ERR(regmap); >> >> This patch triggers some illegal memory accesses when debugfs is >> enabled, as regmap does rely on config->name to be persistent >> when the debugfs registration is deferred via >> regmap_debugfs_early_list >> (__regmap_init() -> regmap_attach_dev() -> regmap_debugfs_init()...), >> leading to a KASAN splat on demand. >> > > Thanks, I missed the subtlety around the debugfs registration. > >> I came up with the following patch that solves the issue for me. >> >> Thanks, >> >>         M. >> >> From fd3f5f2bf72df53be18d13914fe349a34f81f16b Mon Sep 17 00:00:00 2001 >> From: Marc Zyngier >> Date: Thu, 27 Aug 2020 14:45:34 +0100 >> Subject: [PATCH] mfd: syscon: Don't free allocated name for >> regmap_config >> >> The name allocated for the regmap_config structure is freed >> pretty early, right after the registration of the MMIO region. >> >> Unfortunately, that doesn't follow the life cycle that debugfs >> expects, as it can access the name field long after the free >> has occured. >> >> Move the free on the error path, and keep it forever otherwise. > > Hmm, this is exactly what I was trying to avoid. The regmap_init does > duplicate > the name into map->name if config->name is given, and the regmap > debugfs makes > another copy of its own into debugfs_name when actually registered. If > the rules > for regmap_init is that the config->name should be persistent, then I > guess we > have no choice but to go with the below fix. > > Does something like below help? > > diff --git a/drivers/base/regmap/regmap.c > b/drivers/base/regmap/regmap.c > index e93700af7e6e..96d8a0161c89 100644 > --- a/drivers/base/regmap/regmap.c > +++ b/drivers/base/regmap/regmap.c > @@ -1137,7 +1137,7 @@ struct regmap *__regmap_init(struct device *dev, > if (ret != 0) > goto err_regcache; > } else { > - regmap_debugfs_init(map, config->name); > + regmap_debugfs_init(map, map->name); > > But there are couple of other places in regmap code that uses > config->name, but > those won't be exercised with the syscon code. Is config->name always the same as map->name? If so, why don't you just pass map once and for all? Is the lifetime of map->name the same as that of config->name? My worry with this approach is that we start changing stuff in a rush, and this would IMHO deserve a thorough investigation of whether this change is actually safe. I'd rather take the safe approach of either keeping the memory around until we clearly understand what the implications are (and probably this should involve the regmap maintainer), or to revert this patch until we figure out the actual life cycle of the various names. Thanks, M. -- Jazz is not dead. It just smells funny... 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=-11.0 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED 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 2D133C433DF for ; Thu, 27 Aug 2020 20:08:00 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id DA8A520737 for ; Thu, 27 Aug 2020 20:07:59 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="iUvMvbtu"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=kernel.org header.i=@kernel.org header.b="Okue3pjo" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org DA8A520737 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Type: Content-Transfer-Encoding:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:Message-ID:References:In-Reply-To:Subject:To:From: Date:MIME-Version:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=5whEFjwLzAOw5UvmJUbI0XSfY34R/iMBZtIkuh+RTQg=; b=iUvMvbtu256Licpxr6kv1PjWZ pv6p3WeDR0MTzLmyy2k5XG+dcqqvsmOivamnTwKSnXHaFEits/sUjR1LzjCRISIIXja8UinTwwZpJ XtESs2wSMlT2PWHQ9fPmSpK12+d6sbaesdn+GgzAgxGhoj84iBDycfwZ7zkA4k6D041Q4nsbxjn2S byEvH2nlrAwy3W1RSSRn70aIXDLeSXYrXOp8cVhi+vVLSCcGpLThS67mLPPR7O6n8ZPWl54kFgG0l p6oy4uzlkwQhXeqHd8qht8Vo8qB+oONO3+Hdc0djUCFkib9BVZXEBWMnCZ/v4o2QXLZKV6cVGUh/M U4jNq+ihA==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1kBOAL-00046W-N0; Thu, 27 Aug 2020 20:06:33 +0000 Received: from mail.kernel.org ([198.145.29.99]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1kBOAI-00045Z-Gs for linux-arm-kernel@lists.infradead.org; Thu, 27 Aug 2020 20:06:31 +0000 Received: from disco-boy.misterjones.org (disco-boy.misterjones.org [51.254.78.96]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id F19A220737; Thu, 27 Aug 2020 20:06:28 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1598558789; bh=4/XNRU5rKAtpaXdhI/CFjAMslEaB+vEKDey8nNOsVTQ=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=Okue3pjoa1k0VitmvfJa/ru6HzEhtAppffFkKj+MGoBZhxioOa7Ybk7t1e8cXONKE lD/uIXlH0VL6oXQhRJoQwqdpAM/e0XqnXVrTuOs1la3i1ZnNWiUCJ1CJyn5G7n5lPB NiAJ6S01t4j1E4vxyjDCL98261R7nmq+AhouY/p8= Received: from disco-boy.misterjones.org ([51.254.78.96] helo=www.loen.fr) by disco-boy.misterjones.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1kBOAF-007F0X-2e; Thu, 27 Aug 2020 21:06:27 +0100 MIME-Version: 1.0 Date: Thu, 27 Aug 2020 21:06:26 +0100 From: Marc Zyngier To: Suman Anna Subject: Re: [RESEND PATCH v2] mfd: syscon: Use a unique name with regmap_config In-Reply-To: <74bc1f9f-cc48-cec9-85f4-3376b66b40fc@ti.com> References: <20200727211008.24225-1-s-anna@ti.com> <0c1feaf91b9d285c1bded488437705da@misterjones.org> <74bc1f9f-cc48-cec9-85f4-3376b66b40fc@ti.com> User-Agent: Roundcube Webmail/1.4.8 Message-ID: <78b465b080772b6ba867e39a623c2310@kernel.org> X-Sender: maz@kernel.org X-SA-Exim-Connect-IP: 51.254.78.96 X-SA-Exim-Rcpt-To: s-anna@ti.com, lee.jones@linaro.org, arnd@arndb.de, grzegorz.jaszczyk@linaro.org, david@lechnology.com, tony@atomide.com, linux-kernel@vger.kernel.org, linux-omap@vger.kernel.org, linux-arm-kernel@lists.infradead.org, rogerq@ti.com, kernel-team@android.com X-SA-Exim-Mail-From: maz@kernel.org X-SA-Exim-Scanned: No (on disco-boy.misterjones.org); SAEximRunCond expanded to false X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200827_160630_749498_DF18D26D X-CRM114-Status: GOOD ( 34.51 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Grzegorz Jaszczyk , David Lechner , Arnd Bergmann , Tony Lindgren , kernel-team@android.com, linux-kernel@vger.kernel.org, linux-omap@vger.kernel.org, Lee Jones , linux-arm-kernel@lists.infradead.org, Roger Quadros 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 SGkgU3VtYW4sCgpPbiAyMDIwLTA4LTI3IDE5OjI4LCBTdW1hbiBBbm5hIHdyb3RlOgo+IEhpIE1h cmMsCj4gCj4gT24gOC8yNy8yMCA5OjQ2IEFNLCBNYXJjIFp5bmdpZXIgd3JvdGU6Cj4+IEhpIGFs bCwKPj4gCj4+IE9uIDIwMjAtMDctMjcgMjI6MTAsIFN1bWFuIEFubmEgd3JvdGU6Cj4+PiBUaGUg RFQgbm9kZSBmdWxsIG5hbWUgaXMgY3VycmVudGx5IGJlaW5nIHVzZWQgaW4gcmVnbWFwX2NvbmZp Zwo+Pj4gd2hpY2ggaW4gdHVybiBpcyB1c2VkIHRvIGNyZWF0ZSB0aGUgcmVnbWFwIGRlYnVnZnMg ZGlyZWN0b3JpZXMuCj4+PiBUaGlzIG5hbWUgaG93ZXZlciBpcyBub3QgZ3VhcmFudGVlZCB0byBi ZSB1bmlxdWUgYW5kIHRoZSByZWdtYXAKPj4+IGRlYnVnZnMgcmVnaXN0cmF0aW9uIGNhbiBmYWls IGluIHRoZSBjYXNlcyB3aGVyZSB0aGUgc3lzY29uIG5vZGVzCj4+PiBoYXZlIHRoZSBzYW1lIHVu aXQtYWRkcmVzcyBidXQgYXJlIHByZXNlbnQgaW4gZGlmZmVyZW50IERUIG5vZGUKPj4+IGhpZXJh cmNoaWVzLiBSZXBsYWNlIHRoaXMgbG9naWMgdXNpbmcgdGhlIHN5c2NvbiByZWcgcmVzb3VyY2UK Pj4+IGFkZHJlc3MgaW5zdGVhZCAoaW5zcGlyZWQgZnJvbSBsb2dpYyB1c2VkIHdoaWxlIGNyZWF0 aW5nIHBsYXRmb3JtCj4+PiBkZXZpY2VzKSB0byBlbnN1cmUgYSB1bmlxdWUgbmFtZSBpcyBnaXZl biBmb3IgZWFjaCBzeXNjb24uCj4+PiAKPj4+IFNpZ25lZC1vZmYtYnk6IFN1bWFuIEFubmEgPHMt YW5uYUB0aS5jb20+Cj4+PiAtLS0KPj4+IEhpIEFybmQsCj4+PiBMZWUgaXMgbG9va2luZyBmb3Ig eW91ciByZXZpZXcgb24gdGhpcyBwYXRjaC4gQ2FuIHlvdSBwbGVhc2UKPj4+IHJldmlldyBhbmQg cHJvdmlkZSB5b3VyIGNvbW1lbnRzLgo+Pj4gCj4+PiBUaGlzIGlzIGEgcmVzZW5kIG9mIHRoZSBw YXRjaCB0aGF0IHdhcyBwb3N0ZWQgcHJldmlvdXNseSwgcmViYXNlZAo+Pj4gbm93IG9udG8gbGF0 ZXN0IGtlcm5lbC4KPj4+IAo+Pj4gdjI6IGh0dHBzOi8vcGF0Y2h3b3JrLmtlcm5lbC5vcmcvcGF0 Y2gvMTEzNTMzNTUvCj4+PiDCoC0gRml4IGJ1aWxkIHdhcm5pbmcgcmVwb3J0ZWQgYnkga2J1aWxk IHRlc3QgYm90Cj4+PiB2MTogaHR0cHM6Ly9wYXRjaHdvcmsua2VybmVsLm9yZy9wYXRjaC8xMTM0 NjM2My8KPj4+IAo+Pj4gwqBkcml2ZXJzL21mZC9zeXNjb24uYyB8IDQgKysrLQo+Pj4gwqAxIGZp bGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCj4+PiAKPj4+IGRpZmYg LS1naXQgYS9kcml2ZXJzL21mZC9zeXNjb24uYyBiL2RyaXZlcnMvbWZkL3N5c2Nvbi5jCj4+PiBp bmRleCAzYTk3ODE2ZDBjYmEuLjc1ODU5ZTQ5Mjk4NCAxMDA2NDQKPj4+IC0tLSBhL2RyaXZlcnMv bWZkL3N5c2Nvbi5jCj4+PiArKysgYi9kcml2ZXJzL21mZC9zeXNjb24uYwo+Pj4gQEAgLTEwMSwx MiArMTAxLDE0IEBAIHN0YXRpYyBzdHJ1Y3Qgc3lzY29uICpvZl9zeXNjb25fcmVnaXN0ZXIoc3Ry dWN0Cj4+PiBkZXZpY2Vfbm9kZSAqbnAsIGJvb2wgY2hlY2tfY2xrKQo+Pj4gwqDCoMKgwqDCoMKg wqDCoCB9Cj4+PiDCoMKgwqDCoCB9Cj4+PiAKPj4+IC3CoMKgwqAgc3lzY29uX2NvbmZpZy5uYW1l ID0gb2Zfbm9kZV9mdWxsX25hbWUobnApOwo+Pj4gK8KgwqDCoCBzeXNjb25fY29uZmlnLm5hbWUg PSBrYXNwcmludGYoR0ZQX0tFUk5FTCwgIiVwT0ZuQCVsbHgiLCBucCwKPj4+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAodTY0KXJlcy5zdGFydCk7Cj4+PiDC oMKgwqDCoCBzeXNjb25fY29uZmlnLnJlZ19zdHJpZGUgPSByZWdfaW9fd2lkdGg7Cj4+PiDCoMKg wqDCoCBzeXNjb25fY29uZmlnLnZhbF9iaXRzID0gcmVnX2lvX3dpZHRoICogODsKPj4+IMKgwqDC oMKgIHN5c2Nvbl9jb25maWcubWF4X3JlZ2lzdGVyID0gcmVzb3VyY2Vfc2l6ZSgmcmVzKSAtIHJl Z19pb193aWR0aDsKPj4+IAo+Pj4gwqDCoMKgwqAgcmVnbWFwID0gcmVnbWFwX2luaXRfbW1pbyhO VUxMLCBiYXNlLCAmc3lzY29uX2NvbmZpZyk7Cj4+PiArwqDCoMKgIGtmcmVlKHN5c2Nvbl9jb25m aWcubmFtZSk7Cj4+PiDCoMKgwqDCoCBpZiAoSVNfRVJSKHJlZ21hcCkpIHsKPj4+IMKgwqDCoMKg wqDCoMKgwqAgcHJfZXJyKCJyZWdtYXAgaW5pdCBmYWlsZWRcbiIpOwo+Pj4gwqDCoMKgwqDCoMKg wqDCoCByZXQgPSBQVFJfRVJSKHJlZ21hcCk7Cj4+IAo+PiBUaGlzIHBhdGNoIHRyaWdnZXJzIHNv bWUgaWxsZWdhbCBtZW1vcnkgYWNjZXNzZXMgd2hlbiBkZWJ1Z2ZzIGlzCj4+IGVuYWJsZWQsIGFz IHJlZ21hcCBkb2VzIHJlbHkgb24gY29uZmlnLT5uYW1lIHRvIGJlIHBlcnNpc3RlbnQKPj4gd2hl biB0aGUgZGVidWdmcyByZWdpc3RyYXRpb24gaXMgZGVmZXJyZWQgdmlhIAo+PiByZWdtYXBfZGVi dWdmc19lYXJseV9saXN0Cj4+IChfX3JlZ21hcF9pbml0KCkgLT4gcmVnbWFwX2F0dGFjaF9kZXYo KSAtPiByZWdtYXBfZGVidWdmc19pbml0KCkuLi4pLAo+PiBsZWFkaW5nIHRvIGEgS0FTQU4gc3Bs YXQgb24gZGVtYW5kLgo+PiAKPiAKPiBUaGFua3MsIEkgbWlzc2VkIHRoZSBzdWJ0bGV0eSBhcm91 bmQgdGhlIGRlYnVnZnMgcmVnaXN0cmF0aW9uLgo+IAo+PiBJIGNhbWUgdXAgd2l0aCB0aGUgZm9s bG93aW5nIHBhdGNoIHRoYXQgc29sdmVzIHRoZSBpc3N1ZSBmb3IgbWUuCj4+IAo+PiBUaGFua3Ms Cj4+IAo+PiDCoMKgwqDCoMKgwqDCoCBNLgo+PiAKPj4gRnJvbSBmZDNmNWYyYmY3MmRmNTNiZTE4 ZDEzOTE0ZmUzNDlhMzRmODFmMTZiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQo+PiBGcm9tOiBN YXJjIFp5bmdpZXIgPG1hekBrZXJuZWwub3JnPgo+PiBEYXRlOiBUaHUsIDI3IEF1ZyAyMDIwIDE0 OjQ1OjM0ICswMTAwCj4+IFN1YmplY3Q6IFtQQVRDSF0gbWZkOiBzeXNjb246IERvbid0IGZyZWUg YWxsb2NhdGVkIG5hbWUgZm9yIAo+PiByZWdtYXBfY29uZmlnCj4+IAo+PiBUaGUgbmFtZSBhbGxv Y2F0ZWQgZm9yIHRoZSByZWdtYXBfY29uZmlnIHN0cnVjdHVyZSBpcyBmcmVlZAo+PiBwcmV0dHkg ZWFybHksIHJpZ2h0IGFmdGVyIHRoZSByZWdpc3RyYXRpb24gb2YgdGhlIE1NSU8gcmVnaW9uLgo+ PiAKPj4gVW5mb3J0dW5hdGVseSwgdGhhdCBkb2Vzbid0IGZvbGxvdyB0aGUgbGlmZSBjeWNsZSB0 aGF0IGRlYnVnZnMKPj4gZXhwZWN0cywgYXMgaXQgY2FuIGFjY2VzcyB0aGUgbmFtZSBmaWVsZCBs b25nIGFmdGVyIHRoZSBmcmVlCj4+IGhhcyBvY2N1cmVkLgo+PiAKPj4gTW92ZSB0aGUgZnJlZSBv biB0aGUgZXJyb3IgcGF0aCwgYW5kIGtlZXAgaXQgZm9yZXZlciBvdGhlcndpc2UuCj4gCj4gSG1t LCB0aGlzIGlzIGV4YWN0bHkgd2hhdCBJIHdhcyB0cnlpbmcgdG8gYXZvaWQuIFRoZSByZWdtYXBf aW5pdCBkb2VzIAo+IGR1cGxpY2F0ZQo+IHRoZSBuYW1lIGludG8gbWFwLT5uYW1lIGlmIGNvbmZp Zy0+bmFtZSBpcyBnaXZlbiwgYW5kIHRoZSByZWdtYXAgCj4gZGVidWdmcyBtYWtlcwo+IGFub3Ro ZXIgY29weSBvZiBpdHMgb3duIGludG8gZGVidWdmc19uYW1lIHdoZW4gYWN0dWFsbHkgcmVnaXN0 ZXJlZC4gSWYgCj4gdGhlIHJ1bGVzCj4gZm9yIHJlZ21hcF9pbml0IGlzIHRoYXQgdGhlIGNvbmZp Zy0+bmFtZSBzaG91bGQgYmUgcGVyc2lzdGVudCwgdGhlbiBJIAo+IGd1ZXNzIHdlCj4gaGF2ZSBu byBjaG9pY2UgYnV0IHRvIGdvIHdpdGggdGhlIGJlbG93IGZpeC4KPiAKPiBEb2VzIHNvbWV0aGlu ZyBsaWtlIGJlbG93IGhlbHA/Cj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmFzZS9yZWdtYXAv cmVnbWFwLmMgCj4gYi9kcml2ZXJzL2Jhc2UvcmVnbWFwL3JlZ21hcC5jCj4gaW5kZXggZTkzNzAw YWY3ZTZlLi45NmQ4YTAxNjFjODkgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9iYXNlL3JlZ21hcC9y ZWdtYXAuYwo+ICsrKyBiL2RyaXZlcnMvYmFzZS9yZWdtYXAvcmVnbWFwLmMKPiBAQCAtMTEzNyw3 ICsxMTM3LDcgQEAgc3RydWN0IHJlZ21hcCAqX19yZWdtYXBfaW5pdChzdHJ1Y3QgZGV2aWNlICpk ZXYsCj4gICAgICAgICAgICAgICAgIGlmIChyZXQgIT0gMCkKPiAgICAgICAgICAgICAgICAgICAg ICAgICBnb3RvIGVycl9yZWdjYWNoZTsKPiAgICAgICAgIH0gZWxzZSB7Cj4gLSAgICAgICAgICAg ICAgIHJlZ21hcF9kZWJ1Z2ZzX2luaXQobWFwLCBjb25maWctPm5hbWUpOwo+ICsgICAgICAgICAg ICAgICByZWdtYXBfZGVidWdmc19pbml0KG1hcCwgbWFwLT5uYW1lKTsKPiAKPiBCdXQgdGhlcmUg YXJlIGNvdXBsZSBvZiBvdGhlciBwbGFjZXMgaW4gcmVnbWFwIGNvZGUgdGhhdCB1c2VzIAo+IGNv bmZpZy0+bmFtZSwgYnV0Cj4gdGhvc2Ugd29uJ3QgYmUgZXhlcmNpc2VkIHdpdGggdGhlIHN5c2Nv biBjb2RlLgoKSXMgY29uZmlnLT5uYW1lIGFsd2F5cyB0aGUgc2FtZSBhcyBtYXAtPm5hbWU/IElm IHNvLCB3aHkgZG9uJ3QgeW91IGp1c3QKcGFzcyBtYXAgb25jZSBhbmQgZm9yIGFsbD8gSXMgdGhl IGxpZmV0aW1lIG9mIG1hcC0+bmFtZSB0aGUgc2FtZSBhcwp0aGF0IG9mIGNvbmZpZy0+bmFtZT8K Ck15IHdvcnJ5IHdpdGggdGhpcyBhcHByb2FjaCBpcyB0aGF0IHdlIHN0YXJ0IGNoYW5naW5nIHN0 dWZmIGluIGEgcnVzaCwKYW5kIHRoaXMgd291bGQgSU1ITyBkZXNlcnZlIGEgdGhvcm91Z2ggaW52 ZXN0aWdhdGlvbiBvZiB3aGV0aGVyIHRoaXMKY2hhbmdlIGlzIGFjdHVhbGx5IHNhZmUuCgpJJ2Qg cmF0aGVyIHRha2UgdGhlIHNhZmUgYXBwcm9hY2ggb2YgZWl0aGVyIGtlZXBpbmcgdGhlIG1lbW9y eSBhcm91bmQKdW50aWwgd2UgY2xlYXJseSB1bmRlcnN0YW5kIHdoYXQgdGhlIGltcGxpY2F0aW9u cyBhcmUgKGFuZCBwcm9iYWJseQp0aGlzIHNob3VsZCBpbnZvbHZlIHRoZSByZWdtYXAgbWFpbnRh aW5lciksIG9yIHRvIHJldmVydCB0aGlzIHBhdGNoCnVudGlsIHdlIGZpZ3VyZSBvdXQgdGhlIGFj dHVhbCBsaWZlIGN5Y2xlIG9mIHRoZSB2YXJpb3VzIG5hbWVzLgoKVGhhbmtzLAoKICAgICAgICAg TS4KLS0gCkphenogaXMgbm90IGRlYWQuIEl0IGp1c3Qgc21lbGxzIGZ1bm55Li4uCgpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVs IG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDov L2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==