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.6 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,USER_AGENT_SANE_2 autolearn=unavailable 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 5A24AC43467 for ; Fri, 9 Oct 2020 10:34:32 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 06E56221FC for ; Fri, 9 Oct 2020 10:34:31 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1602239672; bh=pRI4Tm1lG+Jblk58G1pSvqxmgDEZi2xS8IJzqwbJFvw=; h=Date:From:To:Cc:Subject:In-Reply-To:References:List-ID:From; b=zQzt030LzC9wfTto1DHIsmjzmZo7vM3dCC11iAzG/XtBTPPzYklntL7VymOoJ1g5u 8gpCfB3oyQGhsbJI9zTIZSRrCVAXt3q05xlGWDyHfb2r37WOKmMiYarlScs6Z0yOi1 eRmpl6SwFl6iEdhiswpViZe+UZxh9JyTOzgEUdec= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2387730AbgJIKeb (ORCPT ); Fri, 9 Oct 2020 06:34:31 -0400 Received: from mail.kernel.org ([198.145.29.99]:56142 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730763AbgJIKea (ORCPT ); Fri, 9 Oct 2020 06:34:30 -0400 Received: from coco.lan (ip5f5ad5d0.dynamic.kabel-deutschland.de [95.90.213.208]) (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 0DEF9221FC; Fri, 9 Oct 2020 10:34:24 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1602239669; bh=pRI4Tm1lG+Jblk58G1pSvqxmgDEZi2xS8IJzqwbJFvw=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=Z0ZZm8k90LDIkkwepgM63s827tTWfKOZRcqR7o+KzIwoiE1/gtsqyykPEtefC1BOJ aqhxaJ85cRFHWn7mghZunfQqK4WizlHdY1AlS3galp81cAdVsdFebaWYB06Z1YG2jP N7/7ovKPoZG++Py9RD5QO4Y+qb3C0vzKbhvXTkLw= Date: Fri, 9 Oct 2020 12:34:21 +0200 From: Mauro Carvalho Chehab To: Daniel Vetter Cc: DRI Development , LKML , kvm@vger.kernel.org, linux-mm@kvack.org, linux-arm-kernel@lists.infradead.org, linux-samsung-soc@vger.kernel.org, linux-media@vger.kernel.org, linux-s390@vger.kernel.org, Daniel Vetter , Jason Gunthorpe , Kees Cook , Dan Williams , Andrew Morton , John Hubbard , =?UTF-8?B?SsOpcsO0bWU=?= Glisse , Jan Kara , Linus Torvalds Subject: Re: [PATCH v2 09/17] mm: Add unsafe_follow_pfn Message-ID: <20201009123421.67a80d72@coco.lan> In-Reply-To: <20201009075934.3509076-10-daniel.vetter@ffwll.ch> References: <20201009075934.3509076-1-daniel.vetter@ffwll.ch> <20201009075934.3509076-10-daniel.vetter@ffwll.ch> X-Mailer: Claws Mail 3.17.6 (GTK+ 2.24.32; x86_64-redhat-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi, Em Fri, 9 Oct 2020 09:59:26 +0200 Daniel Vetter escreveu: > Way back it was a reasonable assumptions that iomem mappings never > change the pfn range they point at. But this has changed: >=20 > - gpu drivers dynamically manage their memory nowadays, invalidating > ptes with unmap_mapping_range when buffers get moved >=20 > - contiguous dma allocations have moved from dedicated carvetouts to > cma regions. This means if we miss the unmap the pfn might contain > pagecache or anon memory (well anything allocated with GFP_MOVEABLE) >=20 > - even /dev/mem now invalidates mappings when the kernel requests that > iomem region when CONFIG_IO_STRICT_DEVMEM is set, see 3234ac664a87 > ("/dev/mem: Revoke mappings when a driver claims the region") >=20 > Accessing pfns obtained from ptes without holding all the locks is > therefore no longer a good idea. >=20 > Unfortunately there's some users where this is not fixable (like v4l > userptr of iomem mappings) or involves a pile of work (vfio type1 > iommu). For now annotate these as unsafe and splat appropriately. >=20 > This patch adds an unsafe_follow_pfn, which later patches will then > roll out to all appropriate places. NACK, as this breaks an existing userspace API on media. While I agree that using the userptr on media is something that new drivers may not support, as DMABUF is a better way of handling it, changing this for existing ones is a big no,=20 as it may break usersapace. The right approach here would be to be able to fine-tune support for it on a per-driver basis, e. g. disabling such feature only for drivers that would use a movable page. The media subsystem has already a way to disable USERPTR support from VB2. the right approach would be to ensure that newer drivers will only set this if they won't use movable pages. Regards, Mauro >=20 > Signed-off-by: Daniel Vetter > Cc: Jason Gunthorpe > Cc: Kees Cook > Cc: Dan Williams > Cc: Andrew Morton > Cc: John Hubbard > Cc: J=C3=A9r=C3=B4me Glisse > Cc: Jan Kara > Cc: Dan Williams > Cc: linux-mm@kvack.org > Cc: linux-arm-kernel@lists.infradead.org > Cc: linux-samsung-soc@vger.kernel.org > Cc: linux-media@vger.kernel.org > Cc: kvm@vger.kernel.org > --- > include/linux/mm.h | 2 ++ > mm/memory.c | 32 +++++++++++++++++++++++++++++++- > mm/nommu.c | 17 +++++++++++++++++ > security/Kconfig | 13 +++++++++++++ > 4 files changed, 63 insertions(+), 1 deletion(-) >=20 > diff --git a/include/linux/mm.h b/include/linux/mm.h > index 2a16631c1fda..ec8c90928fc9 100644 > --- a/include/linux/mm.h > +++ b/include/linux/mm.h > @@ -1653,6 +1653,8 @@ int follow_pte_pmd(struct mm_struct *mm, unsigned l= ong address, > pte_t **ptepp, pmd_t **pmdpp, spinlock_t **ptlp); > int follow_pfn(struct vm_area_struct *vma, unsigned long address, > unsigned long *pfn); > +int unsafe_follow_pfn(struct vm_area_struct *vma, unsigned long address, > + unsigned long *pfn); > int follow_phys(struct vm_area_struct *vma, unsigned long address, > unsigned int flags, unsigned long *prot, resource_size_t *phys); > int generic_access_phys(struct vm_area_struct *vma, unsigned long addr, > diff --git a/mm/memory.c b/mm/memory.c > index f7cbc4dde0ef..7c7b234ffb24 100644 > --- a/mm/memory.c > +++ b/mm/memory.c > @@ -4821,7 +4821,12 @@ EXPORT_SYMBOL(follow_pte_pmd); > * @address: user virtual address > * @pfn: location to store found PFN > * > - * Only IO mappings and raw PFN mappings are allowed. > + * Only IO mappings and raw PFN mappings are allowed. Note that callers = must > + * ensure coherency with pte updates by using a &mmu_notifier to follow = updates. > + * If this is not feasible, or the access to the @pfn is only very short= term, > + * use follow_pte_pmd() instead and hold the pagetable lock for the dura= tion of > + * the access instead. Any caller not following these requirements must = use > + * unsafe_follow_pfn() instead. > * > * Return: zero and the pfn at @pfn on success, -ve otherwise. > */ > @@ -4844,6 +4849,31 @@ int follow_pfn(struct vm_area_struct *vma, unsigne= d long address, > } > EXPORT_SYMBOL(follow_pfn); > =20 > +/** > + * unsafe_follow_pfn - look up PFN at a user virtual address > + * @vma: memory mapping > + * @address: user virtual address > + * @pfn: location to store found PFN > + * > + * Only IO mappings and raw PFN mappings are allowed. > + * > + * Returns zero and the pfn at @pfn on success, -ve otherwise. > + */ > +int unsafe_follow_pfn(struct vm_area_struct *vma, unsigned long address, > + unsigned long *pfn) > +{ > +#ifdef CONFIG_STRICT_FOLLOW_PFN > + pr_info("unsafe follow_pfn usage rejected, see CONFIG_STRICT_FOLLOW_PFN= \n"); > + return -EINVAL; > +#else > + WARN_ONCE(1, "unsafe follow_pfn usage\n"); > + add_taint(TAINT_USER, LOCKDEP_STILL_OK); > + > + return follow_pfn(vma, address, pfn); > +#endif > +} > +EXPORT_SYMBOL(unsafe_follow_pfn); > + > #ifdef CONFIG_HAVE_IOREMAP_PROT > int follow_phys(struct vm_area_struct *vma, > unsigned long address, unsigned int flags, > diff --git a/mm/nommu.c b/mm/nommu.c > index 75a327149af1..3db2910f0d64 100644 > --- a/mm/nommu.c > +++ b/mm/nommu.c > @@ -132,6 +132,23 @@ int follow_pfn(struct vm_area_struct *vma, unsigned = long address, > } > EXPORT_SYMBOL(follow_pfn); > =20 > +/** > + * unsafe_follow_pfn - look up PFN at a user virtual address > + * @vma: memory mapping > + * @address: user virtual address > + * @pfn: location to store found PFN > + * > + * Only IO mappings and raw PFN mappings are allowed. > + * > + * Returns zero and the pfn at @pfn on success, -ve otherwise. > + */ > +int unsafe_follow_pfn(struct vm_area_struct *vma, unsigned long address, > + unsigned long *pfn) > +{ > + return follow_pfn(vma, address, pfn); > +} > +EXPORT_SYMBOL(unsafe_follow_pfn); > + > LIST_HEAD(vmap_area_list); > =20 > void vfree(const void *addr) > diff --git a/security/Kconfig b/security/Kconfig > index 7561f6f99f1d..48945402e103 100644 > --- a/security/Kconfig > +++ b/security/Kconfig > @@ -230,6 +230,19 @@ config STATIC_USERMODEHELPER_PATH > If you wish for all usermode helper programs to be disabled, > specify an empty string here (i.e. ""). > =20 > +config STRICT_FOLLOW_PFN > + bool "Disable unsafe use of follow_pfn" > + depends on MMU > + help > + Some functionality in the kernel follows userspace mappings to iomem > + ranges in an unsafe matter. Examples include v4l userptr for zero-copy > + buffers sharing. > + > + If this option is switched on, such access is rejected. Only enable > + this option when you must run userspace which requires this. > + > + If in doubt, say Y. > + > source "security/selinux/Kconfig" > source "security/smack/Kconfig" > source "security/tomoyo/Kconfig" Thanks, Mauro 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.5 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,USER_AGENT_SANE_2 autolearn=unavailable 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 3C193C433E7 for ; Fri, 9 Oct 2020 10:36:58 +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 9D0DB221FC for ; Fri, 9 Oct 2020 10:36:57 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="2P3l7Mwb"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=kernel.org header.i=@kernel.org header.b="Z0ZZm8k9" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 9D0DB221FC 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-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To:Message-ID: Subject: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=OuWF5K45DikYhlzPp+sutSeOlwb9+O6bqnHBEa/UK+s=; b=2P3l7Mwbokn5HcghWC0mPry22 h4dK3uGS8A3YDXqDv7Fc29TocsyrkwJ7n0/AI3QVq3FOJAPoGYezfgcFCv5sWZv6qhttDAtoqF848 Tc1hDxpkQTxi3xf6PShN9euJC26KnnBkTRd/ncoKHN0PSENo97c3QZ+dj125N7EzhH93oV93lZyut 7UEeyZ12MhDK6otHIihbYjQi2bAsQ9yx6PTpdah+jp3a6Sh01gS7VJH9RTwnsY/bSJqmCVA8UKGSf qCckB/UXg4kEvimInIyITsE+C4cJW66/cHsAF5kY0fViZY4dC62xE/+/zSPPHAepRiiBmffOPkilN SupMwaExg==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1kQpjN-0003sp-Fj; Fri, 09 Oct 2020 10:34: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 1kQpjK-0003ro-6q for linux-arm-kernel@lists.infradead.org; Fri, 09 Oct 2020 10:34:31 +0000 Received: from coco.lan (ip5f5ad5d0.dynamic.kabel-deutschland.de [95.90.213.208]) (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 0DEF9221FC; Fri, 9 Oct 2020 10:34:24 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1602239669; bh=pRI4Tm1lG+Jblk58G1pSvqxmgDEZi2xS8IJzqwbJFvw=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=Z0ZZm8k90LDIkkwepgM63s827tTWfKOZRcqR7o+KzIwoiE1/gtsqyykPEtefC1BOJ aqhxaJ85cRFHWn7mghZunfQqK4WizlHdY1AlS3galp81cAdVsdFebaWYB06Z1YG2jP N7/7ovKPoZG++Py9RD5QO4Y+qb3C0vzKbhvXTkLw= Date: Fri, 9 Oct 2020 12:34:21 +0200 From: Mauro Carvalho Chehab To: Daniel Vetter Subject: Re: [PATCH v2 09/17] mm: Add unsafe_follow_pfn Message-ID: <20201009123421.67a80d72@coco.lan> In-Reply-To: <20201009075934.3509076-10-daniel.vetter@ffwll.ch> References: <20201009075934.3509076-1-daniel.vetter@ffwll.ch> <20201009075934.3509076-10-daniel.vetter@ffwll.ch> X-Mailer: Claws Mail 3.17.6 (GTK+ 2.24.32; x86_64-redhat-linux-gnu) MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20201009_063430_411473_70934B43 X-CRM114-Status: GOOD ( 36.55 ) 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: linux-s390@vger.kernel.org, linux-samsung-soc@vger.kernel.org, Jan Kara , Kees Cook , kvm@vger.kernel.org, Jason Gunthorpe , John Hubbard , LKML , DRI Development , linux-mm@kvack.org, =?UTF-8?B?SsOpcsO0bWU=?= Glisse , Daniel Vetter , Dan Williams , Linus Torvalds , Andrew Morton , linux-arm-kernel@lists.infradead.org, linux-media@vger.kernel.org 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 SGksCgpFbSBGcmksICA5IE9jdCAyMDIwIDA5OjU5OjI2ICswMjAwCkRhbmllbCBWZXR0ZXIgPGRh bmllbC52ZXR0ZXJAZmZ3bGwuY2g+IGVzY3JldmV1OgoKPiBXYXkgYmFjayBpdCB3YXMgYSByZWFz b25hYmxlIGFzc3VtcHRpb25zIHRoYXQgaW9tZW0gbWFwcGluZ3MgbmV2ZXIKPiBjaGFuZ2UgdGhl IHBmbiByYW5nZSB0aGV5IHBvaW50IGF0LiBCdXQgdGhpcyBoYXMgY2hhbmdlZDoKPiAKPiAtIGdw dSBkcml2ZXJzIGR5bmFtaWNhbGx5IG1hbmFnZSB0aGVpciBtZW1vcnkgbm93YWRheXMsIGludmFs aWRhdGluZwo+IHB0ZXMgd2l0aCB1bm1hcF9tYXBwaW5nX3JhbmdlIHdoZW4gYnVmZmVycyBnZXQg bW92ZWQKPiAKPiAtIGNvbnRpZ3VvdXMgZG1hIGFsbG9jYXRpb25zIGhhdmUgbW92ZWQgZnJvbSBk ZWRpY2F0ZWQgY2FydmV0b3V0cyB0bwo+IGNtYSByZWdpb25zLiBUaGlzIG1lYW5zIGlmIHdlIG1p c3MgdGhlIHVubWFwIHRoZSBwZm4gbWlnaHQgY29udGFpbgo+IHBhZ2VjYWNoZSBvciBhbm9uIG1l bW9yeSAod2VsbCBhbnl0aGluZyBhbGxvY2F0ZWQgd2l0aCBHRlBfTU9WRUFCTEUpCj4gCj4gLSBl dmVuIC9kZXYvbWVtIG5vdyBpbnZhbGlkYXRlcyBtYXBwaW5ncyB3aGVuIHRoZSBrZXJuZWwgcmVx dWVzdHMgdGhhdAo+IGlvbWVtIHJlZ2lvbiB3aGVuIENPTkZJR19JT19TVFJJQ1RfREVWTUVNIGlz IHNldCwgc2VlIDMyMzRhYzY2NGE4Nwo+ICgiL2Rldi9tZW06IFJldm9rZSBtYXBwaW5ncyB3aGVu IGEgZHJpdmVyIGNsYWltcyB0aGUgcmVnaW9uIikKPiAKPiBBY2Nlc3NpbmcgcGZucyBvYnRhaW5l ZCBmcm9tIHB0ZXMgd2l0aG91dCBob2xkaW5nIGFsbCB0aGUgbG9ja3MgaXMKPiB0aGVyZWZvcmUg bm8gbG9uZ2VyIGEgZ29vZCBpZGVhLgo+IAo+IFVuZm9ydHVuYXRlbHkgdGhlcmUncyBzb21lIHVz ZXJzIHdoZXJlIHRoaXMgaXMgbm90IGZpeGFibGUgKGxpa2UgdjRsCj4gdXNlcnB0ciBvZiBpb21l bSBtYXBwaW5ncykgb3IgaW52b2x2ZXMgYSBwaWxlIG9mIHdvcmsgKHZmaW8gdHlwZTEKPiBpb21t dSkuIEZvciBub3cgYW5ub3RhdGUgdGhlc2UgYXMgdW5zYWZlIGFuZCBzcGxhdCBhcHByb3ByaWF0 ZWx5Lgo+IAo+IFRoaXMgcGF0Y2ggYWRkcyBhbiB1bnNhZmVfZm9sbG93X3Bmbiwgd2hpY2ggbGF0 ZXIgcGF0Y2hlcyB3aWxsIHRoZW4KPiByb2xsIG91dCB0byBhbGwgYXBwcm9wcmlhdGUgcGxhY2Vz LgoKTkFDSywgYXMgdGhpcyBicmVha3MgYW4gZXhpc3RpbmcgdXNlcnNwYWNlIEFQSSBvbiBtZWRp YS4KCldoaWxlIEkgYWdyZWUgdGhhdCB1c2luZyB0aGUgdXNlcnB0ciBvbiBtZWRpYSBpcyBzb21l dGhpbmcgdGhhdApuZXcgZHJpdmVycyBtYXkgbm90IHN1cHBvcnQsIGFzIERNQUJVRiBpcyBhIGJl dHRlciB3YXkgb2YKaGFuZGxpbmcgaXQsIGNoYW5naW5nIHRoaXMgZm9yIGV4aXN0aW5nIG9uZXMg aXMgYSBiaWcgbm8sIAphcyBpdCBtYXkgYnJlYWsgdXNlcnNhcGFjZS4KClRoZSByaWdodCBhcHBy b2FjaCBoZXJlIHdvdWxkIGJlIHRvIGJlIGFibGUgdG8gZmluZS10dW5lCnN1cHBvcnQgZm9yIGl0 IG9uIGEgcGVyLWRyaXZlciBiYXNpcywgZS4gZy4gZGlzYWJsaW5nIHN1Y2gKZmVhdHVyZSBvbmx5 IGZvciBkcml2ZXJzIHRoYXQgd291bGQgdXNlIGEgbW92YWJsZSBwYWdlLgoKVGhlIG1lZGlhIHN1 YnN5c3RlbSBoYXMgYWxyZWFkeSBhIHdheSB0byBkaXNhYmxlIFVTRVJQVFIKc3VwcG9ydCBmcm9t IFZCMi4gdGhlIHJpZ2h0IGFwcHJvYWNoIHdvdWxkIGJlIHRvIGVuc3VyZQp0aGF0IG5ld2VyIGRy aXZlcnMgd2lsbCBvbmx5IHNldCB0aGlzIGlmIHRoZXkgd29uJ3QgdXNlCm1vdmFibGUgcGFnZXMu CgpSZWdhcmRzLApNYXVybwoKPiAKPiBTaWduZWQtb2ZmLWJ5OiBEYW5pZWwgVmV0dGVyIDxkYW5p ZWwudmV0dGVyQGludGVsLmNvbT4KPiBDYzogSmFzb24gR3VudGhvcnBlIDxqZ2dAemllcGUuY2E+ Cj4gQ2M6IEtlZXMgQ29vayA8a2Vlc2Nvb2tAY2hyb21pdW0ub3JnPgo+IENjOiBEYW4gV2lsbGlh bXMgPGRhbi5qLndpbGxpYW1zQGludGVsLmNvbT4KPiBDYzogQW5kcmV3IE1vcnRvbiA8YWtwbUBs aW51eC1mb3VuZGF0aW9uLm9yZz4KPiBDYzogSm9obiBIdWJiYXJkIDxqaHViYmFyZEBudmlkaWEu Y29tPgo+IENjOiBKw6lyw7RtZSBHbGlzc2UgPGpnbGlzc2VAcmVkaGF0LmNvbT4KPiBDYzogSmFu IEthcmEgPGphY2tAc3VzZS5jej4KPiBDYzogRGFuIFdpbGxpYW1zIDxkYW4uai53aWxsaWFtc0Bp bnRlbC5jb20+Cj4gQ2M6IGxpbnV4LW1tQGt2YWNrLm9yZwo+IENjOiBsaW51eC1hcm0ta2VybmVs QGxpc3RzLmluZnJhZGVhZC5vcmcKPiBDYzogbGludXgtc2Ftc3VuZy1zb2NAdmdlci5rZXJuZWwu b3JnCj4gQ2M6IGxpbnV4LW1lZGlhQHZnZXIua2VybmVsLm9yZwo+IENjOiBrdm1Admdlci5rZXJu ZWwub3JnCj4gLS0tCj4gIGluY2x1ZGUvbGludXgvbW0uaCB8ICAyICsrCj4gIG1tL21lbW9yeS5j ICAgICAgICB8IDMyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystCj4gIG1tL25vbW11 LmMgICAgICAgICB8IDE3ICsrKysrKysrKysrKysrKysrCj4gIHNlY3VyaXR5L0tjb25maWcgICB8 IDEzICsrKysrKysrKysrKysKPiAgNCBmaWxlcyBjaGFuZ2VkLCA2MyBpbnNlcnRpb25zKCspLCAx IGRlbGV0aW9uKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbW0uaCBiL2luY2x1 ZGUvbGludXgvbW0uaAo+IGluZGV4IDJhMTY2MzFjMWZkYS4uZWM4YzkwOTI4ZmM5IDEwMDY0NAo+ IC0tLSBhL2luY2x1ZGUvbGludXgvbW0uaAo+ICsrKyBiL2luY2x1ZGUvbGludXgvbW0uaAo+IEBA IC0xNjUzLDYgKzE2NTMsOCBAQCBpbnQgZm9sbG93X3B0ZV9wbWQoc3RydWN0IG1tX3N0cnVjdCAq bW0sIHVuc2lnbmVkIGxvbmcgYWRkcmVzcywKPiAgCQkgICBwdGVfdCAqKnB0ZXBwLCBwbWRfdCAq KnBtZHBwLCBzcGlubG9ja190ICoqcHRscCk7Cj4gIGludCBmb2xsb3dfcGZuKHN0cnVjdCB2bV9h cmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIGFkZHJlc3MsCj4gIAl1bnNpZ25lZCBsb25n ICpwZm4pOwo+ICtpbnQgdW5zYWZlX2ZvbGxvd19wZm4oc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2 bWEsIHVuc2lnbmVkIGxvbmcgYWRkcmVzcywKPiArCQkgICAgICB1bnNpZ25lZCBsb25nICpwZm4p Owo+ICBpbnQgZm9sbG93X3BoeXMoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVk IGxvbmcgYWRkcmVzcywKPiAgCQl1bnNpZ25lZCBpbnQgZmxhZ3MsIHVuc2lnbmVkIGxvbmcgKnBy b3QsIHJlc291cmNlX3NpemVfdCAqcGh5cyk7Cj4gIGludCBnZW5lcmljX2FjY2Vzc19waHlzKHN0 cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIGFkZHIsCj4gZGlmZiAtLWdp dCBhL21tL21lbW9yeS5jIGIvbW0vbWVtb3J5LmMKPiBpbmRleCBmN2NiYzRkZGUwZWYuLjdjN2Iy MzRmZmIyNCAxMDA2NDQKPiAtLS0gYS9tbS9tZW1vcnkuYwo+ICsrKyBiL21tL21lbW9yeS5jCj4g QEAgLTQ4MjEsNyArNDgyMSwxMiBAQCBFWFBPUlRfU1lNQk9MKGZvbGxvd19wdGVfcG1kKTsKPiAg ICogQGFkZHJlc3M6IHVzZXIgdmlydHVhbCBhZGRyZXNzCj4gICAqIEBwZm46IGxvY2F0aW9uIHRv IHN0b3JlIGZvdW5kIFBGTgo+ICAgKgo+IC0gKiBPbmx5IElPIG1hcHBpbmdzIGFuZCByYXcgUEZO IG1hcHBpbmdzIGFyZSBhbGxvd2VkLgo+ICsgKiBPbmx5IElPIG1hcHBpbmdzIGFuZCByYXcgUEZO IG1hcHBpbmdzIGFyZSBhbGxvd2VkLiBOb3RlIHRoYXQgY2FsbGVycyBtdXN0Cj4gKyAqIGVuc3Vy ZSBjb2hlcmVuY3kgd2l0aCBwdGUgdXBkYXRlcyBieSB1c2luZyBhICZtbXVfbm90aWZpZXIgdG8g Zm9sbG93IHVwZGF0ZXMuCj4gKyAqIElmIHRoaXMgaXMgbm90IGZlYXNpYmxlLCBvciB0aGUgYWNj ZXNzIHRvIHRoZSBAcGZuIGlzIG9ubHkgdmVyeSBzaG9ydCB0ZXJtLAo+ICsgKiB1c2UgZm9sbG93 X3B0ZV9wbWQoKSBpbnN0ZWFkIGFuZCBob2xkIHRoZSBwYWdldGFibGUgbG9jayBmb3IgdGhlIGR1 cmF0aW9uIG9mCj4gKyAqIHRoZSBhY2Nlc3MgaW5zdGVhZC4gQW55IGNhbGxlciBub3QgZm9sbG93 aW5nIHRoZXNlIHJlcXVpcmVtZW50cyBtdXN0IHVzZQo+ICsgKiB1bnNhZmVfZm9sbG93X3Bmbigp IGluc3RlYWQuCj4gICAqCj4gICAqIFJldHVybjogemVybyBhbmQgdGhlIHBmbiBhdCBAcGZuIG9u IHN1Y2Nlc3MsIC12ZSBvdGhlcndpc2UuCj4gICAqLwo+IEBAIC00ODQ0LDYgKzQ4NDksMzEgQEAg aW50IGZvbGxvd19wZm4oc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcg YWRkcmVzcywKPiAgfQo+ICBFWFBPUlRfU1lNQk9MKGZvbGxvd19wZm4pOwo+ICAKPiArLyoqCj4g KyAqIHVuc2FmZV9mb2xsb3dfcGZuIC0gbG9vayB1cCBQRk4gYXQgYSB1c2VyIHZpcnR1YWwgYWRk cmVzcwo+ICsgKiBAdm1hOiBtZW1vcnkgbWFwcGluZwo+ICsgKiBAYWRkcmVzczogdXNlciB2aXJ0 dWFsIGFkZHJlc3MKPiArICogQHBmbjogbG9jYXRpb24gdG8gc3RvcmUgZm91bmQgUEZOCj4gKyAq Cj4gKyAqIE9ubHkgSU8gbWFwcGluZ3MgYW5kIHJhdyBQRk4gbWFwcGluZ3MgYXJlIGFsbG93ZWQu Cj4gKyAqCj4gKyAqIFJldHVybnMgemVybyBhbmQgdGhlIHBmbiBhdCBAcGZuIG9uIHN1Y2Nlc3Ms IC12ZSBvdGhlcndpc2UuCj4gKyAqLwo+ICtpbnQgdW5zYWZlX2ZvbGxvd19wZm4oc3RydWN0IHZt X2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgYWRkcmVzcywKPiArCXVuc2lnbmVkIGxv bmcgKnBmbikKPiArewo+ICsjaWZkZWYgQ09ORklHX1NUUklDVF9GT0xMT1dfUEZOCj4gKwlwcl9p bmZvKCJ1bnNhZmUgZm9sbG93X3BmbiB1c2FnZSByZWplY3RlZCwgc2VlIENPTkZJR19TVFJJQ1Rf Rk9MTE9XX1BGTlxuIik7Cj4gKwlyZXR1cm4gLUVJTlZBTDsKPiArI2Vsc2UKPiArCVdBUk5fT05D RSgxLCAidW5zYWZlIGZvbGxvd19wZm4gdXNhZ2VcbiIpOwo+ICsJYWRkX3RhaW50KFRBSU5UX1VT RVIsIExPQ0tERVBfU1RJTExfT0spOwo+ICsKPiArCXJldHVybiBmb2xsb3dfcGZuKHZtYSwgYWRk cmVzcywgcGZuKTsKPiArI2VuZGlmCj4gK30KPiArRVhQT1JUX1NZTUJPTCh1bnNhZmVfZm9sbG93 X3Bmbik7Cj4gKwo+ICAjaWZkZWYgQ09ORklHX0hBVkVfSU9SRU1BUF9QUk9UCj4gIGludCBmb2xs b3dfcGh5cyhzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwKPiAgCQl1bnNpZ25lZCBsb25nIGFk ZHJlc3MsIHVuc2lnbmVkIGludCBmbGFncywKPiBkaWZmIC0tZ2l0IGEvbW0vbm9tbXUuYyBiL21t L25vbW11LmMKPiBpbmRleCA3NWEzMjcxNDlhZjEuLjNkYjI5MTBmMGQ2NCAxMDA2NDQKPiAtLS0g YS9tbS9ub21tdS5jCj4gKysrIGIvbW0vbm9tbXUuYwo+IEBAIC0xMzIsNiArMTMyLDIzIEBAIGlu dCBmb2xsb3dfcGZuKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIGFk ZHJlc3MsCj4gIH0KPiAgRVhQT1JUX1NZTUJPTChmb2xsb3dfcGZuKTsKPiAgCj4gKy8qKgo+ICsg KiB1bnNhZmVfZm9sbG93X3BmbiAtIGxvb2sgdXAgUEZOIGF0IGEgdXNlciB2aXJ0dWFsIGFkZHJl c3MKPiArICogQHZtYTogbWVtb3J5IG1hcHBpbmcKPiArICogQGFkZHJlc3M6IHVzZXIgdmlydHVh bCBhZGRyZXNzCj4gKyAqIEBwZm46IGxvY2F0aW9uIHRvIHN0b3JlIGZvdW5kIFBGTgo+ICsgKgo+ ICsgKiBPbmx5IElPIG1hcHBpbmdzIGFuZCByYXcgUEZOIG1hcHBpbmdzIGFyZSBhbGxvd2VkLgo+ ICsgKgo+ICsgKiBSZXR1cm5zIHplcm8gYW5kIHRoZSBwZm4gYXQgQHBmbiBvbiBzdWNjZXNzLCAt dmUgb3RoZXJ3aXNlLgo+ICsgKi8KPiAraW50IHVuc2FmZV9mb2xsb3dfcGZuKHN0cnVjdCB2bV9h cmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIGFkZHJlc3MsCj4gKwl1bnNpZ25lZCBsb25n ICpwZm4pCj4gK3sKPiArCXJldHVybiBmb2xsb3dfcGZuKHZtYSwgYWRkcmVzcywgcGZuKTsKPiAr fQo+ICtFWFBPUlRfU1lNQk9MKHVuc2FmZV9mb2xsb3dfcGZuKTsKPiArCj4gIExJU1RfSEVBRCh2 bWFwX2FyZWFfbGlzdCk7Cj4gIAo+ICB2b2lkIHZmcmVlKGNvbnN0IHZvaWQgKmFkZHIpCj4gZGlm ZiAtLWdpdCBhL3NlY3VyaXR5L0tjb25maWcgYi9zZWN1cml0eS9LY29uZmlnCj4gaW5kZXggNzU2 MWY2Zjk5ZjFkLi40ODk0NTQwMmUxMDMgMTAwNjQ0Cj4gLS0tIGEvc2VjdXJpdHkvS2NvbmZpZwo+ ICsrKyBiL3NlY3VyaXR5L0tjb25maWcKPiBAQCAtMjMwLDYgKzIzMCwxOSBAQCBjb25maWcgU1RB VElDX1VTRVJNT0RFSEVMUEVSX1BBVEgKPiAgCSAgSWYgeW91IHdpc2ggZm9yIGFsbCB1c2VybW9k ZSBoZWxwZXIgcHJvZ3JhbXMgdG8gYmUgZGlzYWJsZWQsCj4gIAkgIHNwZWNpZnkgYW4gZW1wdHkg c3RyaW5nIGhlcmUgKGkuZS4gIiIpLgo+ICAKPiArY29uZmlnIFNUUklDVF9GT0xMT1dfUEZOCj4g Kwlib29sICJEaXNhYmxlIHVuc2FmZSB1c2Ugb2YgZm9sbG93X3BmbiIKPiArCWRlcGVuZHMgb24g TU1VCj4gKwloZWxwCj4gKwkgIFNvbWUgZnVuY3Rpb25hbGl0eSBpbiB0aGUga2VybmVsIGZvbGxv d3MgdXNlcnNwYWNlIG1hcHBpbmdzIHRvIGlvbWVtCj4gKwkgIHJhbmdlcyBpbiBhbiB1bnNhZmUg bWF0dGVyLiBFeGFtcGxlcyBpbmNsdWRlIHY0bCB1c2VycHRyIGZvciB6ZXJvLWNvcHkKPiArCSAg YnVmZmVycyBzaGFyaW5nLgo+ICsKPiArCSAgSWYgdGhpcyBvcHRpb24gaXMgc3dpdGNoZWQgb24s IHN1Y2ggYWNjZXNzIGlzIHJlamVjdGVkLiBPbmx5IGVuYWJsZQo+ICsJICB0aGlzIG9wdGlvbiB3 aGVuIHlvdSBtdXN0IHJ1biB1c2Vyc3BhY2Ugd2hpY2ggcmVxdWlyZXMgdGhpcy4KPiArCj4gKwkg IElmIGluIGRvdWJ0LCBzYXkgWS4KPiArCj4gIHNvdXJjZSAic2VjdXJpdHkvc2VsaW51eC9LY29u ZmlnIgo+ICBzb3VyY2UgInNlY3VyaXR5L3NtYWNrL0tjb25maWciCj4gIHNvdXJjZSAic2VjdXJp dHkvdG9tb3lvL0tjb25maWciCgoKClRoYW5rcywKTWF1cm8KCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0 CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFk ZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK 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.3 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE, SPF_PASS,URIBL_BLOCKED,USER_AGENT_SANE_2 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 AC572C433E7 for ; Fri, 9 Oct 2020 10:34:31 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (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 376DC22277 for ; Fri, 9 Oct 2020 10:34:30 +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="Z0ZZm8k9" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 376DC22277 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 413EB6ECB8; Fri, 9 Oct 2020 10:34:30 +0000 (UTC) Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by gabe.freedesktop.org (Postfix) with ESMTPS id 605FD6ECB2 for ; Fri, 9 Oct 2020 10:34:29 +0000 (UTC) Received: from coco.lan (ip5f5ad5d0.dynamic.kabel-deutschland.de [95.90.213.208]) (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 0DEF9221FC; Fri, 9 Oct 2020 10:34:24 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1602239669; bh=pRI4Tm1lG+Jblk58G1pSvqxmgDEZi2xS8IJzqwbJFvw=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=Z0ZZm8k90LDIkkwepgM63s827tTWfKOZRcqR7o+KzIwoiE1/gtsqyykPEtefC1BOJ aqhxaJ85cRFHWn7mghZunfQqK4WizlHdY1AlS3galp81cAdVsdFebaWYB06Z1YG2jP N7/7ovKPoZG++Py9RD5QO4Y+qb3C0vzKbhvXTkLw= Date: Fri, 9 Oct 2020 12:34:21 +0200 From: Mauro Carvalho Chehab To: Daniel Vetter Subject: Re: [PATCH v2 09/17] mm: Add unsafe_follow_pfn Message-ID: <20201009123421.67a80d72@coco.lan> In-Reply-To: <20201009075934.3509076-10-daniel.vetter@ffwll.ch> References: <20201009075934.3509076-1-daniel.vetter@ffwll.ch> <20201009075934.3509076-10-daniel.vetter@ffwll.ch> X-Mailer: Claws Mail 3.17.6 (GTK+ 2.24.32; x86_64-redhat-linux-gnu) MIME-Version: 1.0 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: linux-s390@vger.kernel.org, linux-samsung-soc@vger.kernel.org, Jan Kara , Kees Cook , kvm@vger.kernel.org, Jason Gunthorpe , John Hubbard , LKML , DRI Development , linux-mm@kvack.org, =?UTF-8?B?SsOpcsO0bWU=?= Glisse , Daniel Vetter , Dan Williams , Linus Torvalds , Andrew Morton , linux-arm-kernel@lists.infradead.org, linux-media@vger.kernel.org Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" SGksCgpFbSBGcmksICA5IE9jdCAyMDIwIDA5OjU5OjI2ICswMjAwCkRhbmllbCBWZXR0ZXIgPGRh bmllbC52ZXR0ZXJAZmZ3bGwuY2g+IGVzY3JldmV1OgoKPiBXYXkgYmFjayBpdCB3YXMgYSByZWFz b25hYmxlIGFzc3VtcHRpb25zIHRoYXQgaW9tZW0gbWFwcGluZ3MgbmV2ZXIKPiBjaGFuZ2UgdGhl IHBmbiByYW5nZSB0aGV5IHBvaW50IGF0LiBCdXQgdGhpcyBoYXMgY2hhbmdlZDoKPiAKPiAtIGdw dSBkcml2ZXJzIGR5bmFtaWNhbGx5IG1hbmFnZSB0aGVpciBtZW1vcnkgbm93YWRheXMsIGludmFs aWRhdGluZwo+IHB0ZXMgd2l0aCB1bm1hcF9tYXBwaW5nX3JhbmdlIHdoZW4gYnVmZmVycyBnZXQg bW92ZWQKPiAKPiAtIGNvbnRpZ3VvdXMgZG1hIGFsbG9jYXRpb25zIGhhdmUgbW92ZWQgZnJvbSBk ZWRpY2F0ZWQgY2FydmV0b3V0cyB0bwo+IGNtYSByZWdpb25zLiBUaGlzIG1lYW5zIGlmIHdlIG1p c3MgdGhlIHVubWFwIHRoZSBwZm4gbWlnaHQgY29udGFpbgo+IHBhZ2VjYWNoZSBvciBhbm9uIG1l bW9yeSAod2VsbCBhbnl0aGluZyBhbGxvY2F0ZWQgd2l0aCBHRlBfTU9WRUFCTEUpCj4gCj4gLSBl dmVuIC9kZXYvbWVtIG5vdyBpbnZhbGlkYXRlcyBtYXBwaW5ncyB3aGVuIHRoZSBrZXJuZWwgcmVx dWVzdHMgdGhhdAo+IGlvbWVtIHJlZ2lvbiB3aGVuIENPTkZJR19JT19TVFJJQ1RfREVWTUVNIGlz IHNldCwgc2VlIDMyMzRhYzY2NGE4Nwo+ICgiL2Rldi9tZW06IFJldm9rZSBtYXBwaW5ncyB3aGVu IGEgZHJpdmVyIGNsYWltcyB0aGUgcmVnaW9uIikKPiAKPiBBY2Nlc3NpbmcgcGZucyBvYnRhaW5l ZCBmcm9tIHB0ZXMgd2l0aG91dCBob2xkaW5nIGFsbCB0aGUgbG9ja3MgaXMKPiB0aGVyZWZvcmUg bm8gbG9uZ2VyIGEgZ29vZCBpZGVhLgo+IAo+IFVuZm9ydHVuYXRlbHkgdGhlcmUncyBzb21lIHVz ZXJzIHdoZXJlIHRoaXMgaXMgbm90IGZpeGFibGUgKGxpa2UgdjRsCj4gdXNlcnB0ciBvZiBpb21l bSBtYXBwaW5ncykgb3IgaW52b2x2ZXMgYSBwaWxlIG9mIHdvcmsgKHZmaW8gdHlwZTEKPiBpb21t dSkuIEZvciBub3cgYW5ub3RhdGUgdGhlc2UgYXMgdW5zYWZlIGFuZCBzcGxhdCBhcHByb3ByaWF0 ZWx5Lgo+IAo+IFRoaXMgcGF0Y2ggYWRkcyBhbiB1bnNhZmVfZm9sbG93X3Bmbiwgd2hpY2ggbGF0 ZXIgcGF0Y2hlcyB3aWxsIHRoZW4KPiByb2xsIG91dCB0byBhbGwgYXBwcm9wcmlhdGUgcGxhY2Vz LgoKTkFDSywgYXMgdGhpcyBicmVha3MgYW4gZXhpc3RpbmcgdXNlcnNwYWNlIEFQSSBvbiBtZWRp YS4KCldoaWxlIEkgYWdyZWUgdGhhdCB1c2luZyB0aGUgdXNlcnB0ciBvbiBtZWRpYSBpcyBzb21l dGhpbmcgdGhhdApuZXcgZHJpdmVycyBtYXkgbm90IHN1cHBvcnQsIGFzIERNQUJVRiBpcyBhIGJl dHRlciB3YXkgb2YKaGFuZGxpbmcgaXQsIGNoYW5naW5nIHRoaXMgZm9yIGV4aXN0aW5nIG9uZXMg aXMgYSBiaWcgbm8sIAphcyBpdCBtYXkgYnJlYWsgdXNlcnNhcGFjZS4KClRoZSByaWdodCBhcHBy b2FjaCBoZXJlIHdvdWxkIGJlIHRvIGJlIGFibGUgdG8gZmluZS10dW5lCnN1cHBvcnQgZm9yIGl0 IG9uIGEgcGVyLWRyaXZlciBiYXNpcywgZS4gZy4gZGlzYWJsaW5nIHN1Y2gKZmVhdHVyZSBvbmx5 IGZvciBkcml2ZXJzIHRoYXQgd291bGQgdXNlIGEgbW92YWJsZSBwYWdlLgoKVGhlIG1lZGlhIHN1 YnN5c3RlbSBoYXMgYWxyZWFkeSBhIHdheSB0byBkaXNhYmxlIFVTRVJQVFIKc3VwcG9ydCBmcm9t IFZCMi4gdGhlIHJpZ2h0IGFwcHJvYWNoIHdvdWxkIGJlIHRvIGVuc3VyZQp0aGF0IG5ld2VyIGRy aXZlcnMgd2lsbCBvbmx5IHNldCB0aGlzIGlmIHRoZXkgd29uJ3QgdXNlCm1vdmFibGUgcGFnZXMu CgpSZWdhcmRzLApNYXVybwoKPiAKPiBTaWduZWQtb2ZmLWJ5OiBEYW5pZWwgVmV0dGVyIDxkYW5p ZWwudmV0dGVyQGludGVsLmNvbT4KPiBDYzogSmFzb24gR3VudGhvcnBlIDxqZ2dAemllcGUuY2E+ Cj4gQ2M6IEtlZXMgQ29vayA8a2Vlc2Nvb2tAY2hyb21pdW0ub3JnPgo+IENjOiBEYW4gV2lsbGlh bXMgPGRhbi5qLndpbGxpYW1zQGludGVsLmNvbT4KPiBDYzogQW5kcmV3IE1vcnRvbiA8YWtwbUBs aW51eC1mb3VuZGF0aW9uLm9yZz4KPiBDYzogSm9obiBIdWJiYXJkIDxqaHViYmFyZEBudmlkaWEu Y29tPgo+IENjOiBKw6lyw7RtZSBHbGlzc2UgPGpnbGlzc2VAcmVkaGF0LmNvbT4KPiBDYzogSmFu IEthcmEgPGphY2tAc3VzZS5jej4KPiBDYzogRGFuIFdpbGxpYW1zIDxkYW4uai53aWxsaWFtc0Bp bnRlbC5jb20+Cj4gQ2M6IGxpbnV4LW1tQGt2YWNrLm9yZwo+IENjOiBsaW51eC1hcm0ta2VybmVs QGxpc3RzLmluZnJhZGVhZC5vcmcKPiBDYzogbGludXgtc2Ftc3VuZy1zb2NAdmdlci5rZXJuZWwu b3JnCj4gQ2M6IGxpbnV4LW1lZGlhQHZnZXIua2VybmVsLm9yZwo+IENjOiBrdm1Admdlci5rZXJu ZWwub3JnCj4gLS0tCj4gIGluY2x1ZGUvbGludXgvbW0uaCB8ICAyICsrCj4gIG1tL21lbW9yeS5j ICAgICAgICB8IDMyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystCj4gIG1tL25vbW11 LmMgICAgICAgICB8IDE3ICsrKysrKysrKysrKysrKysrCj4gIHNlY3VyaXR5L0tjb25maWcgICB8 IDEzICsrKysrKysrKysrKysKPiAgNCBmaWxlcyBjaGFuZ2VkLCA2MyBpbnNlcnRpb25zKCspLCAx IGRlbGV0aW9uKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbW0uaCBiL2luY2x1 ZGUvbGludXgvbW0uaAo+IGluZGV4IDJhMTY2MzFjMWZkYS4uZWM4YzkwOTI4ZmM5IDEwMDY0NAo+ IC0tLSBhL2luY2x1ZGUvbGludXgvbW0uaAo+ICsrKyBiL2luY2x1ZGUvbGludXgvbW0uaAo+IEBA IC0xNjUzLDYgKzE2NTMsOCBAQCBpbnQgZm9sbG93X3B0ZV9wbWQoc3RydWN0IG1tX3N0cnVjdCAq bW0sIHVuc2lnbmVkIGxvbmcgYWRkcmVzcywKPiAgCQkgICBwdGVfdCAqKnB0ZXBwLCBwbWRfdCAq KnBtZHBwLCBzcGlubG9ja190ICoqcHRscCk7Cj4gIGludCBmb2xsb3dfcGZuKHN0cnVjdCB2bV9h cmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIGFkZHJlc3MsCj4gIAl1bnNpZ25lZCBsb25n ICpwZm4pOwo+ICtpbnQgdW5zYWZlX2ZvbGxvd19wZm4oc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2 bWEsIHVuc2lnbmVkIGxvbmcgYWRkcmVzcywKPiArCQkgICAgICB1bnNpZ25lZCBsb25nICpwZm4p Owo+ICBpbnQgZm9sbG93X3BoeXMoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVk IGxvbmcgYWRkcmVzcywKPiAgCQl1bnNpZ25lZCBpbnQgZmxhZ3MsIHVuc2lnbmVkIGxvbmcgKnBy b3QsIHJlc291cmNlX3NpemVfdCAqcGh5cyk7Cj4gIGludCBnZW5lcmljX2FjY2Vzc19waHlzKHN0 cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIGFkZHIsCj4gZGlmZiAtLWdp dCBhL21tL21lbW9yeS5jIGIvbW0vbWVtb3J5LmMKPiBpbmRleCBmN2NiYzRkZGUwZWYuLjdjN2Iy MzRmZmIyNCAxMDA2NDQKPiAtLS0gYS9tbS9tZW1vcnkuYwo+ICsrKyBiL21tL21lbW9yeS5jCj4g QEAgLTQ4MjEsNyArNDgyMSwxMiBAQCBFWFBPUlRfU1lNQk9MKGZvbGxvd19wdGVfcG1kKTsKPiAg ICogQGFkZHJlc3M6IHVzZXIgdmlydHVhbCBhZGRyZXNzCj4gICAqIEBwZm46IGxvY2F0aW9uIHRv IHN0b3JlIGZvdW5kIFBGTgo+ICAgKgo+IC0gKiBPbmx5IElPIG1hcHBpbmdzIGFuZCByYXcgUEZO IG1hcHBpbmdzIGFyZSBhbGxvd2VkLgo+ICsgKiBPbmx5IElPIG1hcHBpbmdzIGFuZCByYXcgUEZO IG1hcHBpbmdzIGFyZSBhbGxvd2VkLiBOb3RlIHRoYXQgY2FsbGVycyBtdXN0Cj4gKyAqIGVuc3Vy ZSBjb2hlcmVuY3kgd2l0aCBwdGUgdXBkYXRlcyBieSB1c2luZyBhICZtbXVfbm90aWZpZXIgdG8g Zm9sbG93IHVwZGF0ZXMuCj4gKyAqIElmIHRoaXMgaXMgbm90IGZlYXNpYmxlLCBvciB0aGUgYWNj ZXNzIHRvIHRoZSBAcGZuIGlzIG9ubHkgdmVyeSBzaG9ydCB0ZXJtLAo+ICsgKiB1c2UgZm9sbG93 X3B0ZV9wbWQoKSBpbnN0ZWFkIGFuZCBob2xkIHRoZSBwYWdldGFibGUgbG9jayBmb3IgdGhlIGR1 cmF0aW9uIG9mCj4gKyAqIHRoZSBhY2Nlc3MgaW5zdGVhZC4gQW55IGNhbGxlciBub3QgZm9sbG93 aW5nIHRoZXNlIHJlcXVpcmVtZW50cyBtdXN0IHVzZQo+ICsgKiB1bnNhZmVfZm9sbG93X3Bmbigp IGluc3RlYWQuCj4gICAqCj4gICAqIFJldHVybjogemVybyBhbmQgdGhlIHBmbiBhdCBAcGZuIG9u IHN1Y2Nlc3MsIC12ZSBvdGhlcndpc2UuCj4gICAqLwo+IEBAIC00ODQ0LDYgKzQ4NDksMzEgQEAg aW50IGZvbGxvd19wZm4oc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcg YWRkcmVzcywKPiAgfQo+ICBFWFBPUlRfU1lNQk9MKGZvbGxvd19wZm4pOwo+ICAKPiArLyoqCj4g KyAqIHVuc2FmZV9mb2xsb3dfcGZuIC0gbG9vayB1cCBQRk4gYXQgYSB1c2VyIHZpcnR1YWwgYWRk cmVzcwo+ICsgKiBAdm1hOiBtZW1vcnkgbWFwcGluZwo+ICsgKiBAYWRkcmVzczogdXNlciB2aXJ0 dWFsIGFkZHJlc3MKPiArICogQHBmbjogbG9jYXRpb24gdG8gc3RvcmUgZm91bmQgUEZOCj4gKyAq Cj4gKyAqIE9ubHkgSU8gbWFwcGluZ3MgYW5kIHJhdyBQRk4gbWFwcGluZ3MgYXJlIGFsbG93ZWQu Cj4gKyAqCj4gKyAqIFJldHVybnMgemVybyBhbmQgdGhlIHBmbiBhdCBAcGZuIG9uIHN1Y2Nlc3Ms IC12ZSBvdGhlcndpc2UuCj4gKyAqLwo+ICtpbnQgdW5zYWZlX2ZvbGxvd19wZm4oc3RydWN0IHZt X2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgYWRkcmVzcywKPiArCXVuc2lnbmVkIGxv bmcgKnBmbikKPiArewo+ICsjaWZkZWYgQ09ORklHX1NUUklDVF9GT0xMT1dfUEZOCj4gKwlwcl9p bmZvKCJ1bnNhZmUgZm9sbG93X3BmbiB1c2FnZSByZWplY3RlZCwgc2VlIENPTkZJR19TVFJJQ1Rf Rk9MTE9XX1BGTlxuIik7Cj4gKwlyZXR1cm4gLUVJTlZBTDsKPiArI2Vsc2UKPiArCVdBUk5fT05D RSgxLCAidW5zYWZlIGZvbGxvd19wZm4gdXNhZ2VcbiIpOwo+ICsJYWRkX3RhaW50KFRBSU5UX1VT RVIsIExPQ0tERVBfU1RJTExfT0spOwo+ICsKPiArCXJldHVybiBmb2xsb3dfcGZuKHZtYSwgYWRk cmVzcywgcGZuKTsKPiArI2VuZGlmCj4gK30KPiArRVhQT1JUX1NZTUJPTCh1bnNhZmVfZm9sbG93 X3Bmbik7Cj4gKwo+ICAjaWZkZWYgQ09ORklHX0hBVkVfSU9SRU1BUF9QUk9UCj4gIGludCBmb2xs b3dfcGh5cyhzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwKPiAgCQl1bnNpZ25lZCBsb25nIGFk ZHJlc3MsIHVuc2lnbmVkIGludCBmbGFncywKPiBkaWZmIC0tZ2l0IGEvbW0vbm9tbXUuYyBiL21t L25vbW11LmMKPiBpbmRleCA3NWEzMjcxNDlhZjEuLjNkYjI5MTBmMGQ2NCAxMDA2NDQKPiAtLS0g YS9tbS9ub21tdS5jCj4gKysrIGIvbW0vbm9tbXUuYwo+IEBAIC0xMzIsNiArMTMyLDIzIEBAIGlu dCBmb2xsb3dfcGZuKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIGFk ZHJlc3MsCj4gIH0KPiAgRVhQT1JUX1NZTUJPTChmb2xsb3dfcGZuKTsKPiAgCj4gKy8qKgo+ICsg KiB1bnNhZmVfZm9sbG93X3BmbiAtIGxvb2sgdXAgUEZOIGF0IGEgdXNlciB2aXJ0dWFsIGFkZHJl c3MKPiArICogQHZtYTogbWVtb3J5IG1hcHBpbmcKPiArICogQGFkZHJlc3M6IHVzZXIgdmlydHVh bCBhZGRyZXNzCj4gKyAqIEBwZm46IGxvY2F0aW9uIHRvIHN0b3JlIGZvdW5kIFBGTgo+ICsgKgo+ ICsgKiBPbmx5IElPIG1hcHBpbmdzIGFuZCByYXcgUEZOIG1hcHBpbmdzIGFyZSBhbGxvd2VkLgo+ ICsgKgo+ICsgKiBSZXR1cm5zIHplcm8gYW5kIHRoZSBwZm4gYXQgQHBmbiBvbiBzdWNjZXNzLCAt dmUgb3RoZXJ3aXNlLgo+ICsgKi8KPiAraW50IHVuc2FmZV9mb2xsb3dfcGZuKHN0cnVjdCB2bV9h cmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIGFkZHJlc3MsCj4gKwl1bnNpZ25lZCBsb25n ICpwZm4pCj4gK3sKPiArCXJldHVybiBmb2xsb3dfcGZuKHZtYSwgYWRkcmVzcywgcGZuKTsKPiAr fQo+ICtFWFBPUlRfU1lNQk9MKHVuc2FmZV9mb2xsb3dfcGZuKTsKPiArCj4gIExJU1RfSEVBRCh2 bWFwX2FyZWFfbGlzdCk7Cj4gIAo+ICB2b2lkIHZmcmVlKGNvbnN0IHZvaWQgKmFkZHIpCj4gZGlm ZiAtLWdpdCBhL3NlY3VyaXR5L0tjb25maWcgYi9zZWN1cml0eS9LY29uZmlnCj4gaW5kZXggNzU2 MWY2Zjk5ZjFkLi40ODk0NTQwMmUxMDMgMTAwNjQ0Cj4gLS0tIGEvc2VjdXJpdHkvS2NvbmZpZwo+ ICsrKyBiL3NlY3VyaXR5L0tjb25maWcKPiBAQCAtMjMwLDYgKzIzMCwxOSBAQCBjb25maWcgU1RB VElDX1VTRVJNT0RFSEVMUEVSX1BBVEgKPiAgCSAgSWYgeW91IHdpc2ggZm9yIGFsbCB1c2VybW9k ZSBoZWxwZXIgcHJvZ3JhbXMgdG8gYmUgZGlzYWJsZWQsCj4gIAkgIHNwZWNpZnkgYW4gZW1wdHkg c3RyaW5nIGhlcmUgKGkuZS4gIiIpLgo+ICAKPiArY29uZmlnIFNUUklDVF9GT0xMT1dfUEZOCj4g Kwlib29sICJEaXNhYmxlIHVuc2FmZSB1c2Ugb2YgZm9sbG93X3BmbiIKPiArCWRlcGVuZHMgb24g TU1VCj4gKwloZWxwCj4gKwkgIFNvbWUgZnVuY3Rpb25hbGl0eSBpbiB0aGUga2VybmVsIGZvbGxv d3MgdXNlcnNwYWNlIG1hcHBpbmdzIHRvIGlvbWVtCj4gKwkgIHJhbmdlcyBpbiBhbiB1bnNhZmUg bWF0dGVyLiBFeGFtcGxlcyBpbmNsdWRlIHY0bCB1c2VycHRyIGZvciB6ZXJvLWNvcHkKPiArCSAg YnVmZmVycyBzaGFyaW5nLgo+ICsKPiArCSAgSWYgdGhpcyBvcHRpb24gaXMgc3dpdGNoZWQgb24s IHN1Y2ggYWNjZXNzIGlzIHJlamVjdGVkLiBPbmx5IGVuYWJsZQo+ICsJICB0aGlzIG9wdGlvbiB3 aGVuIHlvdSBtdXN0IHJ1biB1c2Vyc3BhY2Ugd2hpY2ggcmVxdWlyZXMgdGhpcy4KPiArCj4gKwkg IElmIGluIGRvdWJ0LCBzYXkgWS4KPiArCj4gIHNvdXJjZSAic2VjdXJpdHkvc2VsaW51eC9LY29u ZmlnIgo+ICBzb3VyY2UgInNlY3VyaXR5L3NtYWNrL0tjb25maWciCj4gIHNvdXJjZSAic2VjdXJp dHkvdG9tb3lvL0tjb25maWciCgoKClRoYW5rcywKTWF1cm8KX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2 ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21h aWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==