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=-0.5 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED autolearn=no 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 4DE44C54E49 for ; Fri, 8 May 2020 23:53:11 +0000 (UTC) Received: from ml01.01.org (ml01.01.org [198.145.21.10]) (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 237AC2063A for ; Fri, 8 May 2020 23:53:10 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=kernel.org header.i=@kernel.org header.b="NlxsLycU" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 237AC2063A Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=linux-foundation.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-nvdimm-bounces@lists.01.org Received: from ml01.vlan13.01.org (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id BE52D11897D7E; Fri, 8 May 2020 16:51:03 -0700 (PDT) Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=198.145.29.99; helo=mail.kernel.org; envelope-from=akpm@linux-foundation.org; receiver= Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 379A01183DF43 for ; Fri, 8 May 2020 16:51:00 -0700 (PDT) Received: from localhost.localdomain (c-73-231-172-41.hsd1.ca.comcast.net [73.231.172.41]) (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 C36D12063A; Fri, 8 May 2020 23:53:06 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1588981987; bh=HhHKaurLAmb7NjsgrxbGjxSSVFmDRRfuuN9UCDjB39o=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=NlxsLycULu/0pDE5VncKMqsY68TvDzrBX4Z64itAzdFVs23jjGQe08PfomP/NtWT8 t+PlAdQE7wuMV/9rpzTnihUcJMRtJqlsdArVibUT/u4A0ZhILXtPYgryyu3m8JvFgO cvEh5TrYedonuRC3JSEcG71eqRoSLBbbgIM2fD/M= Date: Fri, 8 May 2020 16:53:06 -0700 From: Andrew Morton To: David Hildenbrand Subject: Re: [PATCH v4 1/4] device-dax: Don't leak kernel memory to user space after unloading kmem Message-Id: <20200508165306.7cd806f7e451c5c9bc2a40ac@linux-foundation.org> In-Reply-To: <20200508084217.9160-2-david@redhat.com> References: <20200508084217.9160-1-david@redhat.com> <20200508084217.9160-2-david@redhat.com> X-Mailer: Sylpheed 3.5.1 (GTK+ 2.24.31; x86_64-pc-linux-gnu) Mime-Version: 1.0 Message-ID-Hash: 6W7QSPE7ZEWAL6ZYR4TGD3UL33C4XWVE X-Message-ID-Hash: 6W7QSPE7ZEWAL6ZYR4TGD3UL33C4XWVE X-MailFrom: akpm@linux-foundation.org X-Mailman-Rule-Hits: nonmember-moderation X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation CC: linux-kernel@vger.kernel.org, linux-mm@kvack.org, linux-nvdimm@lists.01.org, kexec@lists.infradead.org, Pavel Tatashin , stable@vger.kernel.org X-Mailman-Version: 3.1.1 Precedence: list List-Id: "Linux-nvdimm developer list." Archived-At: List-Archive: List-Help: List-Post: List-Subscribe: List-Unsubscribe: Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 T24gRnJpLCAgOCBNYXkgMjAyMCAxMDo0MjoxNCArMDIwMCBEYXZpZCBIaWxkZW5icmFuZCA8ZGF2 aWRAcmVkaGF0LmNvbT4gd3JvdGU6DQoNCj4gQXNzdW1lIHdlIGhhdmUga21lbSBjb25maWd1cmVk IGFuZCBsb2FkZWQ6DQo+ICAgW3Jvb3RAbG9jYWxob3N0IH5dIyBjYXQgL3Byb2MvaW9tZW0NCj4g ICAuLi4NCj4gICAxNDAwMDAwMDAtMzNmZmZmZmZmIDogUGVyc2lzdGVudCBNZW1vcnkkDQo+ICAg ICAxNDAwMDAwMDAtMTQ4MWZmZmZmIDogbmFtZXNwYWNlMC4wDQo+ICAgICAxNTAwMDAwMDAtMzNm ZmZmZmZmIDogZGF4MC4wDQo+ICAgICAgIDE1MDAwMDAwMC0zM2ZmZmZmZmYgOiBTeXN0ZW0gUkFN DQo+IA0KPiBBc3N1bWUgd2UgdHJ5IHRvIHVubG9hZCBrbWVtLiBUaGlzIGZvcmNlLXVubG9hZGlu ZyB3aWxsIHdvcmssIGV2ZW4gaWYNCj4gbWVtb3J5IGNhbm5vdCBnZXQgcmVtb3ZlZCBmcm9tIHRo ZSBzeXN0ZW0uDQo+ICAgW3Jvb3RAbG9jYWxob3N0IH5dIyBybW1vZCBrbWVtDQo+ICAgWyAgIDg2 LjM4MDIyOF0gcmVtb3ZpbmcgbWVtb3J5IGZhaWxzLCBiZWNhdXNlIG1lbW9yeSBbMHgwMDAwMDAw MTUwMDAwMDAwLTB4MDAwMDAwMDE1N2ZmZmZmZl0gaXMgb25saW5lZA0KPiAgIC4uLg0KPiAgIFsg ICA4Ni40MzEyMjVdIGttZW0gZGF4MC4wOiBEQVggcmVnaW9uIFttZW0gMHgxNTAwMDAwMDAtMHgz M2ZmZmZmZmZdIGNhbm5vdCBiZSBob3RyZW1vdmVkIHVudGlsIHRoZSBuZXh0IHJlYm9vdA0KPiAN Cj4gTm93LCB3ZSBjYW4gcmVjb25maWd1cmUgdGhlIG5hbWVzcGFjZToNCj4gICBbcm9vdEBsb2Nh bGhvc3Qgfl0jIG5kY3RsIGNyZWF0ZS1uYW1lc3BhY2UgLS1mb3JjZSAtLXJlY29uZmlnPW5hbWVz cGFjZTAuMCAtLW1vZGU9ZGV2ZGF4DQo+ICAgWyAgMTMxLjQwOTM1MV0gbmRfcG1lbSBuYW1lc3Bh Y2UwLjA6IGNvdWxkIG5vdCByZXNlcnZlIHJlZ2lvbiBbbWVtIDB4MTQwMDAwMDAwLTB4MzNmZmZm ZmZmXWRheA0KPiAgIFsgIDEzMS40MTAxNDddIG5kX3BtZW06IHByb2JlIG9mIG5hbWVzcGFjZTAu MCBmYWlsZWQgd2l0aCBlcnJvciAtMTZuYW1lc3BhY2UwLjAgLS1tb2RlPWRldmRheA0KPiAgIC4u Lg0KPiANCj4gVGhpcyBmYWlscyBhcyBleHBlY3RlZCBkdWUgdG8gdGhlIGJ1c3kgbWVtb3J5IHJl c291cmNlLCBhbmQgdGhlIG1lbW9yeQ0KPiBjYW5ub3QgYmUgdXNlZC4gSG93ZXZlciwgdGhlIGRh eDAuMCBkZXZpY2UgaXMgcmVtb3ZlZCwgYW5kIGFsb25nIGl0cyBuYW1lLg0KPiANCj4gVGhlIG5h bWUgb2YgdGhlIG1lbW9yeSByZXNvdXJjZSBub3cgcG9pbnRzIGF0IGZyZWVkIG1lbW9yeSAobmFt ZSBvZiB0aGUNCj4gZGV2aWNlKS4NCj4gICBbcm9vdEBsb2NhbGhvc3Qgfl0jIGNhdCAvcHJvYy9p b21lbQ0KPiAgIC4uLg0KPiAgIDE0MDAwMDAwMC0zM2ZmZmZmZmYgOiBQZXJzaXN0ZW50IE1lbW9y eQ0KPiAgICAgMTQwMDAwMDAwLTE0ODFmZmZmZiA6IG5hbWVzcGFjZTAuMA0KPiAgICAgMTUwMDAw MDAwLTMzZmZmZmZmZiA6IO+/vV/vv71eN1/vv73vv70vX++/ve+/vXdS77+977+9V1Hvv73vv73v v71e77+977+977+9IC4uLg0KPiAgICAgMTUwMDAwMDAwLTMzZmZmZmZmZiA6IFN5c3RlbSBSQU0N Cj4gDQo+IFdlIGhhdmUgdG8gbWFrZSBzdXJlIHRvIGR1cGxpY2F0ZSB0aGUgc3RyaW5nLiBXaGls ZSBhdCBpdCwgcmVtb3ZlIHRoZQ0KPiBzdXBlcmZsdW91cyBzZXR0aW5nIG9mIHRoZSBuYW1lIGFu ZCBmaXh1cCBhIHN0YWxlIGNvbW1lbnQuDQo+IA0KPiBGaXhlczogOWY5NjBkYTcyYjI1ICgiZGV2 aWNlLWRheDogIkhvdHJlbW92ZSIgcGVyc2lzdGVudCBtZW1vcnkgdGhhdCBpcyB1c2VkIGxpa2Ug bm9ybWFsIFJBTSIpDQo+IENjOiBzdGFibGVAdmdlci5rZXJuZWwub3JnICMgdjUuMw0KDQpobS4N Cg0KSXMgdGhpcyByZWFsbHkgLXN0YWJsZSBtYXRlcmlhbD8gIFRoZXNlIGFyZSBhbGwgcHJpdmls ZWdlZCBvcGVyYXRpb25zLA0KSSBleHBlY3Q/DQoNCkFzc3VtaW5nICJ5ZXMiLCBJJ3ZlIHF1ZXVl ZCB0aGlzIHNlcGFyYXRlbHksIHN0YWdlZCBmb3IgNS43LXJjWC4gIEknbGwNCnJlZG8gcGF0Y2hl cyAyLTQgYXMgYSB0aHJlZS1wYXRjaCBzZXJpZXMgZm9yIDUuOC1yYzEuDQoNCj4gQ2M6IERhbiBX aWxsaWFtcyA8ZGFuLmoud2lsbGlhbXNAaW50ZWwuY29tPg0KPiBDYzogVmlzaGFsIFZlcm1hIDx2 aXNoYWwubC52ZXJtYUBpbnRlbC5jb20+DQo+IENjOiBEYXZlIEppYW5nIDxkYXZlLmppYW5nQGlu dGVsLmNvbT4NCj4gQ2M6IFBhdmVsIFRhdGFzaGluIDxwYXNoYS50YXRhc2hpbkBzb2xlZW4uY29t Pg0KDQpSZXZpZXdlcnMsIHBsZWFzZSA7KQ0KDQpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpMaW51eC1udmRpbW0gbWFpbGluZyBsaXN0IC0tIGxpbnV4LW52 ZGltbUBsaXN0cy4wMS5vcmcKVG8gdW5zdWJzY3JpYmUgc2VuZCBhbiBlbWFpbCB0byBsaW51eC1u dmRpbW0tbGVhdmVAbGlzdHMuMDEub3JnCg== 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=-0.8 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE, SPF_PASS,URIBL_BLOCKED autolearn=no 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 CF8D9C47255 for ; Fri, 8 May 2020 23:53:10 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id A933820820 for ; Fri, 8 May 2020 23:53:10 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1588981990; bh=HhHKaurLAmb7NjsgrxbGjxSSVFmDRRfuuN9UCDjB39o=; h=Date:From:To:Cc:Subject:In-Reply-To:References:List-ID:From; b=GEOzERxpYLqynL7LCzsMomYAwwa68ulZv25qs2hYRnnajFmOcLKB5JDy8LmJGEE3S SfchqTctp/FgagOW5E3p1H2QokjQCveP/7QYq3JW43Zfak5daYSahCf7ZJOlyoOP7O 9115fsfx49ZAOY7pz4lvnlNBXI+M8tsN9U2FMbZA= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728371AbgEHXxJ (ORCPT ); Fri, 8 May 2020 19:53:09 -0400 Received: from mail.kernel.org ([198.145.29.99]:54958 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727778AbgEHXxJ (ORCPT ); Fri, 8 May 2020 19:53:09 -0400 Received: from localhost.localdomain (c-73-231-172-41.hsd1.ca.comcast.net [73.231.172.41]) (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 C36D12063A; Fri, 8 May 2020 23:53:06 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1588981987; bh=HhHKaurLAmb7NjsgrxbGjxSSVFmDRRfuuN9UCDjB39o=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=NlxsLycULu/0pDE5VncKMqsY68TvDzrBX4Z64itAzdFVs23jjGQe08PfomP/NtWT8 t+PlAdQE7wuMV/9rpzTnihUcJMRtJqlsdArVibUT/u4A0ZhILXtPYgryyu3m8JvFgO cvEh5TrYedonuRC3JSEcG71eqRoSLBbbgIM2fD/M= Date: Fri, 8 May 2020 16:53:06 -0700 From: Andrew Morton To: David Hildenbrand Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org, linux-nvdimm@lists.01.org, kexec@lists.infradead.org, Vishal Verma , Dave Jiang , Pavel Tatashin , stable@vger.kernel.org, Dan Williams Subject: Re: [PATCH v4 1/4] device-dax: Don't leak kernel memory to user space after unloading kmem Message-Id: <20200508165306.7cd806f7e451c5c9bc2a40ac@linux-foundation.org> In-Reply-To: <20200508084217.9160-2-david@redhat.com> References: <20200508084217.9160-1-david@redhat.com> <20200508084217.9160-2-david@redhat.com> X-Mailer: Sylpheed 3.5.1 (GTK+ 2.24.31; x86_64-pc-linux-gnu) Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, 8 May 2020 10:42:14 +0200 David Hildenbrand wrote: > Assume we have kmem configured and loaded: > [root@localhost ~]# cat /proc/iomem > ... > 140000000-33fffffff : Persistent Memory$ > 140000000-1481fffff : namespace0.0 > 150000000-33fffffff : dax0.0 > 150000000-33fffffff : System RAM > > Assume we try to unload kmem. This force-unloading will work, even if > memory cannot get removed from the system. > [root@localhost ~]# rmmod kmem > [ 86.380228] removing memory fails, because memory [0x0000000150000000-0x0000000157ffffff] is onlined > ... > [ 86.431225] kmem dax0.0: DAX region [mem 0x150000000-0x33fffffff] cannot be hotremoved until the next reboot > > Now, we can reconfigure the namespace: > [root@localhost ~]# ndctl create-namespace --force --reconfig=namespace0.0 --mode=devdax > [ 131.409351] nd_pmem namespace0.0: could not reserve region [mem 0x140000000-0x33fffffff]dax > [ 131.410147] nd_pmem: probe of namespace0.0 failed with error -16namespace0.0 --mode=devdax > ... > > This fails as expected due to the busy memory resource, and the memory > cannot be used. However, the dax0.0 device is removed, and along its name. > > The name of the memory resource now points at freed memory (name of the > device). > [root@localhost ~]# cat /proc/iomem > ... > 140000000-33fffffff : Persistent Memory > 140000000-1481fffff : namespace0.0 > 150000000-33fffffff : �_�^7_��/_��wR��WQ���^��� ... > 150000000-33fffffff : System RAM > > We have to make sure to duplicate the string. While at it, remove the > superfluous setting of the name and fixup a stale comment. > > Fixes: 9f960da72b25 ("device-dax: "Hotremove" persistent memory that is used like normal RAM") > Cc: stable@vger.kernel.org # v5.3 hm. Is this really -stable material? These are all privileged operations, I expect? Assuming "yes", I've queued this separately, staged for 5.7-rcX. I'll redo patches 2-4 as a three-patch series for 5.8-rc1. > Cc: Dan Williams > Cc: Vishal Verma > Cc: Dave Jiang > Cc: Pavel Tatashin Reviewers, please ;) From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from mail.kernel.org ([198.145.29.99]) by bombadil.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1jXCnl-0002nG-E5 for kexec@lists.infradead.org; Fri, 08 May 2020 23:53:10 +0000 Date: Fri, 8 May 2020 16:53:06 -0700 From: Andrew Morton Subject: Re: [PATCH v4 1/4] device-dax: Don't leak kernel memory to user space after unloading kmem Message-Id: <20200508165306.7cd806f7e451c5c9bc2a40ac@linux-foundation.org> In-Reply-To: <20200508084217.9160-2-david@redhat.com> References: <20200508084217.9160-1-david@redhat.com> <20200508084217.9160-2-david@redhat.com> Mime-Version: 1.0 List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "kexec" Errors-To: kexec-bounces+dwmw2=infradead.org@lists.infradead.org To: David Hildenbrand Cc: Dave Jiang , Pavel Tatashin , linux-nvdimm@lists.01.org, Vishal Verma , kexec@lists.infradead.org, linux-kernel@vger.kernel.org, stable@vger.kernel.org, linux-mm@kvack.org, Dan Williams T24gRnJpLCAgOCBNYXkgMjAyMCAxMDo0MjoxNCArMDIwMCBEYXZpZCBIaWxkZW5icmFuZCA8ZGF2 aWRAcmVkaGF0LmNvbT4gd3JvdGU6Cgo+IEFzc3VtZSB3ZSBoYXZlIGttZW0gY29uZmlndXJlZCBh bmQgbG9hZGVkOgo+ICAgW3Jvb3RAbG9jYWxob3N0IH5dIyBjYXQgL3Byb2MvaW9tZW0KPiAgIC4u Lgo+ICAgMTQwMDAwMDAwLTMzZmZmZmZmZiA6IFBlcnNpc3RlbnQgTWVtb3J5JAo+ICAgICAxNDAw MDAwMDAtMTQ4MWZmZmZmIDogbmFtZXNwYWNlMC4wCj4gICAgIDE1MDAwMDAwMC0zM2ZmZmZmZmYg OiBkYXgwLjAKPiAgICAgICAxNTAwMDAwMDAtMzNmZmZmZmZmIDogU3lzdGVtIFJBTQo+IAo+IEFz c3VtZSB3ZSB0cnkgdG8gdW5sb2FkIGttZW0uIFRoaXMgZm9yY2UtdW5sb2FkaW5nIHdpbGwgd29y aywgZXZlbiBpZgo+IG1lbW9yeSBjYW5ub3QgZ2V0IHJlbW92ZWQgZnJvbSB0aGUgc3lzdGVtLgo+ ICAgW3Jvb3RAbG9jYWxob3N0IH5dIyBybW1vZCBrbWVtCj4gICBbICAgODYuMzgwMjI4XSByZW1v dmluZyBtZW1vcnkgZmFpbHMsIGJlY2F1c2UgbWVtb3J5IFsweDAwMDAwMDAxNTAwMDAwMDAtMHgw MDAwMDAwMTU3ZmZmZmZmXSBpcyBvbmxpbmVkCj4gICAuLi4KPiAgIFsgICA4Ni40MzEyMjVdIGtt ZW0gZGF4MC4wOiBEQVggcmVnaW9uIFttZW0gMHgxNTAwMDAwMDAtMHgzM2ZmZmZmZmZdIGNhbm5v dCBiZSBob3RyZW1vdmVkIHVudGlsIHRoZSBuZXh0IHJlYm9vdAo+IAo+IE5vdywgd2UgY2FuIHJl Y29uZmlndXJlIHRoZSBuYW1lc3BhY2U6Cj4gICBbcm9vdEBsb2NhbGhvc3Qgfl0jIG5kY3RsIGNy ZWF0ZS1uYW1lc3BhY2UgLS1mb3JjZSAtLXJlY29uZmlnPW5hbWVzcGFjZTAuMCAtLW1vZGU9ZGV2 ZGF4Cj4gICBbICAxMzEuNDA5MzUxXSBuZF9wbWVtIG5hbWVzcGFjZTAuMDogY291bGQgbm90IHJl c2VydmUgcmVnaW9uIFttZW0gMHgxNDAwMDAwMDAtMHgzM2ZmZmZmZmZdZGF4Cj4gICBbICAxMzEu NDEwMTQ3XSBuZF9wbWVtOiBwcm9iZSBvZiBuYW1lc3BhY2UwLjAgZmFpbGVkIHdpdGggZXJyb3Ig LTE2bmFtZXNwYWNlMC4wIC0tbW9kZT1kZXZkYXgKPiAgIC4uLgo+IAo+IFRoaXMgZmFpbHMgYXMg ZXhwZWN0ZWQgZHVlIHRvIHRoZSBidXN5IG1lbW9yeSByZXNvdXJjZSwgYW5kIHRoZSBtZW1vcnkK PiBjYW5ub3QgYmUgdXNlZC4gSG93ZXZlciwgdGhlIGRheDAuMCBkZXZpY2UgaXMgcmVtb3ZlZCwg YW5kIGFsb25nIGl0cyBuYW1lLgo+IAo+IFRoZSBuYW1lIG9mIHRoZSBtZW1vcnkgcmVzb3VyY2Ug bm93IHBvaW50cyBhdCBmcmVlZCBtZW1vcnkgKG5hbWUgb2YgdGhlCj4gZGV2aWNlKS4KPiAgIFty b290QGxvY2FsaG9zdCB+XSMgY2F0IC9wcm9jL2lvbWVtCj4gICAuLi4KPiAgIDE0MDAwMDAwMC0z M2ZmZmZmZmYgOiBQZXJzaXN0ZW50IE1lbW9yeQo+ICAgICAxNDAwMDAwMDAtMTQ4MWZmZmZmIDog bmFtZXNwYWNlMC4wCj4gICAgIDE1MDAwMDAwMC0zM2ZmZmZmZmYgOiDvv71f77+9Xjdf77+977+9 L1/vv73vv713Uu+/ve+/vVdR77+977+977+9Xu+/ve+/ve+/vSAuLi4KPiAgICAgMTUwMDAwMDAw LTMzZmZmZmZmZiA6IFN5c3RlbSBSQU0KPiAKPiBXZSBoYXZlIHRvIG1ha2Ugc3VyZSB0byBkdXBs aWNhdGUgdGhlIHN0cmluZy4gV2hpbGUgYXQgaXQsIHJlbW92ZSB0aGUKPiBzdXBlcmZsdW91cyBz ZXR0aW5nIG9mIHRoZSBuYW1lIGFuZCBmaXh1cCBhIHN0YWxlIGNvbW1lbnQuCj4gCj4gRml4ZXM6 IDlmOTYwZGE3MmIyNSAoImRldmljZS1kYXg6ICJIb3RyZW1vdmUiIHBlcnNpc3RlbnQgbWVtb3J5 IHRoYXQgaXMgdXNlZCBsaWtlIG5vcm1hbCBSQU0iKQo+IENjOiBzdGFibGVAdmdlci5rZXJuZWwu b3JnICMgdjUuMwoKaG0uCgpJcyB0aGlzIHJlYWxseSAtc3RhYmxlIG1hdGVyaWFsPyAgVGhlc2Ug YXJlIGFsbCBwcml2aWxlZ2VkIG9wZXJhdGlvbnMsCkkgZXhwZWN0PwoKQXNzdW1pbmcgInllcyIs IEkndmUgcXVldWVkIHRoaXMgc2VwYXJhdGVseSwgc3RhZ2VkIGZvciA1LjctcmNYLiAgSSdsbApy ZWRvIHBhdGNoZXMgMi00IGFzIGEgdGhyZWUtcGF0Y2ggc2VyaWVzIGZvciA1LjgtcmMxLgoKPiBD YzogRGFuIFdpbGxpYW1zIDxkYW4uai53aWxsaWFtc0BpbnRlbC5jb20+Cj4gQ2M6IFZpc2hhbCBW ZXJtYSA8dmlzaGFsLmwudmVybWFAaW50ZWwuY29tPgo+IENjOiBEYXZlIEppYW5nIDxkYXZlLmpp YW5nQGludGVsLmNvbT4KPiBDYzogUGF2ZWwgVGF0YXNoaW4gPHBhc2hhLnRhdGFzaGluQHNvbGVl bi5jb20+CgpSZXZpZXdlcnMsIHBsZWFzZSA7KQoKCgpfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwprZXhlYyBtYWlsaW5nIGxpc3QKa2V4ZWNAbGlzdHMuaW5m cmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2tl eGVjCg==