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=-12.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_GIT 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 BD1BFC2BD0C for ; Fri, 9 Oct 2020 08:01:30 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 775B022227 for ; Fri, 9 Oct 2020 08:01:30 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=ffwll.ch header.i=@ffwll.ch header.b="V5TBVRBR" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1732726AbgJIIB3 (ORCPT ); Fri, 9 Oct 2020 04:01:29 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49458 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1732728AbgJIIAN (ORCPT ); Fri, 9 Oct 2020 04:00:13 -0400 Received: from mail-wr1-x442.google.com (mail-wr1-x442.google.com [IPv6:2a00:1450:4864:20::442]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 69AB3C0613BD for ; Fri, 9 Oct 2020 01:00:06 -0700 (PDT) Received: by mail-wr1-x442.google.com with SMTP id h7so9267991wre.4 for ; Fri, 09 Oct 2020 01:00:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ffwll.ch; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=8IYpHoJKMEBqVJFoX6/iQeVme5ZF9eX1Ohz2yNiHkQw=; b=V5TBVRBRPN9edskHpLIv3qmr2Zi6EnQTVoAOTYgk7+BRq1KKIWa6q7mFJLoiALOuq2 CiqW3BZJxAJ4YMUa4ZyS65/c95SC2xcHnGWLTTvFB5DwSik8w/WDrfvFoJYcLhqlXfuC +NDRoziDxLuuf934gZwN0eu3ic7vtvcSJxqcY= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=8IYpHoJKMEBqVJFoX6/iQeVme5ZF9eX1Ohz2yNiHkQw=; b=U4tH6v/mkFMaiQnlNbARvAt8Tb69I0uYKsoiHvIBwHYijprdZDtA/GeITQrz0agGwQ 5Eq8f2D1lkTYqbFOYYADaRo7oSym+hMvmlukqWLvEarK4K3gF3nHeWzBCom97da0IFmP IVM/jOHpQ/yF+AuhclLJI4OQppI966eH5L5Nd1k6/cXCWjH6sjEBcguWvKukshjUrzjc A0MWmzuo/QchxQLFeNpNgl6bX2J7ahAD3AEZDx0oQwep/UoI9ePCYlO1dzIpM7d2aUCl kMWlL9BJXlhU5zwNWK7L3occkf2nCvt99a5AsBUI/yjUX81N3lMMHI0Owm+ap2Mjgl2B HQLQ== X-Gm-Message-State: AOAM531eecG0ce1gMXW/qVCV6A4dHUeRBmVv0+XxnNNUQtVnsYb4MVXK dWzZm/+7DWNdc9vbsg12Cih0IA== X-Google-Smtp-Source: ABdhPJxzUQTqOJAIzZm/ndkz80IFBZnJ5bzyw+53Ch4riLtBtEjBnNhRxlpbdicdKJrL10CrNuYvdA== X-Received: by 2002:a5d:5106:: with SMTP id s6mr13282446wrt.51.1602230405123; Fri, 09 Oct 2020 01:00:05 -0700 (PDT) Received: from phenom.ffwll.local ([2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa]) by smtp.gmail.com with ESMTPSA id u17sm11634118wri.45.2020.10.09.01.00.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 09 Oct 2020 01:00:04 -0700 (PDT) From: Daniel Vetter To: DRI Development , LKML Cc: 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 , Daniel Vetter , Jason Gunthorpe , Kees Cook , Dan Williams , Andrew Morton , John Hubbard , =?UTF-8?q?J=C3=A9r=C3=B4me=20Glisse?= , Jan Kara Subject: [PATCH v2 09/17] mm: Add unsafe_follow_pfn Date: Fri, 9 Oct 2020 09:59:26 +0200 Message-Id: <20201009075934.3509076-10-daniel.vetter@ffwll.ch> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20201009075934.3509076-1-daniel.vetter@ffwll.ch> References: <20201009075934.3509076-1-daniel.vetter@ffwll.ch> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Way back it was a reasonable assumptions that iomem mappings never change the pfn range they point at. But this has changed: - gpu drivers dynamically manage their memory nowadays, invalidating ptes with unmap_mapping_range when buffers get moved - 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) - 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") Accessing pfns obtained from ptes without holding all the locks is therefore no longer a good idea. 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. This patch adds an unsafe_follow_pfn, which later patches will then roll out to all appropriate places. Signed-off-by: Daniel Vetter Cc: Jason Gunthorpe Cc: Kees Cook Cc: Dan Williams Cc: Andrew Morton Cc: John Hubbard Cc: Jérôme 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(-) 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 long 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 duration 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, unsigned long address, } EXPORT_SYMBOL(follow_pfn); +/** + * 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); +/** + * 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); 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. ""). +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" -- 2.28.0 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=-12.8 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_GIT 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 5327FC433DF for ; Fri, 9 Oct 2020 08:04:08 +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 A9E8721789 for ; Fri, 9 Oct 2020 08:04:07 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="w6hOpmYN"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=ffwll.ch header.i=@ffwll.ch header.b="V5TBVRBR" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org A9E8721789 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=ffwll.ch 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:Date: Subject:To:From:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=Il0ssAcu8wFYJPIUU7mT7BufH37wEvBQXqW8uGJCHgY=; b=w6hOpmYNZ/lnyQT5VUCl8zCOB jHvx4bbSxQGw23LHOcJo/rVT4lV4vfC53W1WqxtHA1FlFb0TaOosKtbu6si02JqndHP7OIQXB5n23 sUFbXYTZUuQZcKLZlbTdMofsCMhFETFWn5tsDjPDryqgrQxaYC+8jGeFFf0/+CUsRthVd87kycrhV L0bM5zPNf2wPcvnLTdqu7BlhblZzo8Z2j737HdPc/joTcU6gPxVAa0qjIkOHuSKT6pkOI6MbsvOpe KkUVo69xj/AFygQKFzpRCX8Iuxk7gbs+C3uPBEYqKeZJagA6/HJi0Ix7LEVGbkNlniw2y4+FlCvfT FfHEyM8ow==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1kQnLn-0003I2-Ep; Fri, 09 Oct 2020 08:02:03 +0000 Received: from mail-wr1-x442.google.com ([2a00:1450:4864:20::442]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1kQnJu-0002V6-AQ for linux-arm-kernel@lists.infradead.org; Fri, 09 Oct 2020 08:00:20 +0000 Received: by mail-wr1-x442.google.com with SMTP id n18so9251823wrs.5 for ; Fri, 09 Oct 2020 01:00:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ffwll.ch; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=8IYpHoJKMEBqVJFoX6/iQeVme5ZF9eX1Ohz2yNiHkQw=; b=V5TBVRBRPN9edskHpLIv3qmr2Zi6EnQTVoAOTYgk7+BRq1KKIWa6q7mFJLoiALOuq2 CiqW3BZJxAJ4YMUa4ZyS65/c95SC2xcHnGWLTTvFB5DwSik8w/WDrfvFoJYcLhqlXfuC +NDRoziDxLuuf934gZwN0eu3ic7vtvcSJxqcY= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=8IYpHoJKMEBqVJFoX6/iQeVme5ZF9eX1Ohz2yNiHkQw=; b=FW3ePaZ2jKeWvcZHMG3loQeptCPfiI6rYguHwqVosgkrFFPRnzyfQIEX3p56XHkrs0 rdqAxQekbL7cL0XY+7ww9Z/hgEB6Z93BOjXwV+9EDwrFQfyc4pvP/cU56YNqWnzC+8B4 c5JszPZQwP5S0uSU57rQBySRcUBOnTF5I+zO209BZhyEESAkYDkJDc02x9FRFa7/2btO X/dO8/hI6rcj6Nlap27OI33FdvNbbqjKUDBN8TPEtpzr7CrfD2aCd+HQR29v6j+AvLwo 1xHHDa8l9APp0keed+Sjm0k1tweJX1olm2OnEWwC7IDA3JZPgoutC1aZc75A1Vi6keNv J7lg== X-Gm-Message-State: AOAM530o5Og6WZ/kp5dvI5LRBrmRJ4w4/2J5SZV8ilEITyUdnqrQlo9X ceOFxpy2aOxUOFQENtYHxJkBHw== X-Google-Smtp-Source: ABdhPJxzUQTqOJAIzZm/ndkz80IFBZnJ5bzyw+53Ch4riLtBtEjBnNhRxlpbdicdKJrL10CrNuYvdA== X-Received: by 2002:a5d:5106:: with SMTP id s6mr13282446wrt.51.1602230405123; Fri, 09 Oct 2020 01:00:05 -0700 (PDT) Received: from phenom.ffwll.local ([2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa]) by smtp.gmail.com with ESMTPSA id u17sm11634118wri.45.2020.10.09.01.00.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 09 Oct 2020 01:00:04 -0700 (PDT) From: Daniel Vetter To: DRI Development , LKML Subject: [PATCH v2 09/17] mm: Add unsafe_follow_pfn Date: Fri, 9 Oct 2020 09:59:26 +0200 Message-Id: <20201009075934.3509076-10-daniel.vetter@ffwll.ch> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20201009075934.3509076-1-daniel.vetter@ffwll.ch> References: <20201009075934.3509076-1-daniel.vetter@ffwll.ch> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20201009_040006_548943_93AD62A8 X-CRM114-Status: GOOD ( 21.71 ) 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 , Daniel Vetter , linux-mm@kvack.org, =?UTF-8?q?J=C3=A9r=C3=B4me=20Glisse?= , John Hubbard , Daniel Vetter , Dan Williams , 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 V2F5IGJhY2sgaXQgd2FzIGEgcmVhc29uYWJsZSBhc3N1bXB0aW9ucyB0aGF0IGlvbWVtIG1hcHBp bmdzIG5ldmVyCmNoYW5nZSB0aGUgcGZuIHJhbmdlIHRoZXkgcG9pbnQgYXQuIEJ1dCB0aGlzIGhh cyBjaGFuZ2VkOgoKLSBncHUgZHJpdmVycyBkeW5hbWljYWxseSBtYW5hZ2UgdGhlaXIgbWVtb3J5 IG5vd2FkYXlzLCBpbnZhbGlkYXRpbmcKcHRlcyB3aXRoIHVubWFwX21hcHBpbmdfcmFuZ2Ugd2hl biBidWZmZXJzIGdldCBtb3ZlZAoKLSBjb250aWd1b3VzIGRtYSBhbGxvY2F0aW9ucyBoYXZlIG1v dmVkIGZyb20gZGVkaWNhdGVkIGNhcnZldG91dHMgdG8KY21hIHJlZ2lvbnMuIFRoaXMgbWVhbnMg aWYgd2UgbWlzcyB0aGUgdW5tYXAgdGhlIHBmbiBtaWdodCBjb250YWluCnBhZ2VjYWNoZSBvciBh bm9uIG1lbW9yeSAod2VsbCBhbnl0aGluZyBhbGxvY2F0ZWQgd2l0aCBHRlBfTU9WRUFCTEUpCgot IGV2ZW4gL2Rldi9tZW0gbm93IGludmFsaWRhdGVzIG1hcHBpbmdzIHdoZW4gdGhlIGtlcm5lbCBy ZXF1ZXN0cyB0aGF0CmlvbWVtIHJlZ2lvbiB3aGVuIENPTkZJR19JT19TVFJJQ1RfREVWTUVNIGlz IHNldCwgc2VlIDMyMzRhYzY2NGE4NwooIi9kZXYvbWVtOiBSZXZva2UgbWFwcGluZ3Mgd2hlbiBh IGRyaXZlciBjbGFpbXMgdGhlIHJlZ2lvbiIpCgpBY2Nlc3NpbmcgcGZucyBvYnRhaW5lZCBmcm9t IHB0ZXMgd2l0aG91dCBob2xkaW5nIGFsbCB0aGUgbG9ja3MgaXMKdGhlcmVmb3JlIG5vIGxvbmdl ciBhIGdvb2QgaWRlYS4KClVuZm9ydHVuYXRlbHkgdGhlcmUncyBzb21lIHVzZXJzIHdoZXJlIHRo aXMgaXMgbm90IGZpeGFibGUgKGxpa2UgdjRsCnVzZXJwdHIgb2YgaW9tZW0gbWFwcGluZ3MpIG9y IGludm9sdmVzIGEgcGlsZSBvZiB3b3JrICh2ZmlvIHR5cGUxCmlvbW11KS4gRm9yIG5vdyBhbm5v dGF0ZSB0aGVzZSBhcyB1bnNhZmUgYW5kIHNwbGF0IGFwcHJvcHJpYXRlbHkuCgpUaGlzIHBhdGNo IGFkZHMgYW4gdW5zYWZlX2ZvbGxvd19wZm4sIHdoaWNoIGxhdGVyIHBhdGNoZXMgd2lsbCB0aGVu CnJvbGwgb3V0IHRvIGFsbCBhcHByb3ByaWF0ZSBwbGFjZXMuCgpTaWduZWQtb2ZmLWJ5OiBEYW5p ZWwgVmV0dGVyIDxkYW5pZWwudmV0dGVyQGludGVsLmNvbT4KQ2M6IEphc29uIEd1bnRob3JwZSA8 amdnQHppZXBlLmNhPgpDYzogS2VlcyBDb29rIDxrZWVzY29va0BjaHJvbWl1bS5vcmc+CkNjOiBE YW4gV2lsbGlhbXMgPGRhbi5qLndpbGxpYW1zQGludGVsLmNvbT4KQ2M6IEFuZHJldyBNb3J0b24g PGFrcG1AbGludXgtZm91bmRhdGlvbi5vcmc+CkNjOiBKb2huIEh1YmJhcmQgPGpodWJiYXJkQG52 aWRpYS5jb20+CkNjOiBKw6lyw7RtZSBHbGlzc2UgPGpnbGlzc2VAcmVkaGF0LmNvbT4KQ2M6IEph biBLYXJhIDxqYWNrQHN1c2UuY3o+CkNjOiBEYW4gV2lsbGlhbXMgPGRhbi5qLndpbGxpYW1zQGlu dGVsLmNvbT4KQ2M6IGxpbnV4LW1tQGt2YWNrLm9yZwpDYzogbGludXgtYXJtLWtlcm5lbEBsaXN0 cy5pbmZyYWRlYWQub3JnCkNjOiBsaW51eC1zYW1zdW5nLXNvY0B2Z2VyLmtlcm5lbC5vcmcKQ2M6 IGxpbnV4LW1lZGlhQHZnZXIua2VybmVsLm9yZwpDYzoga3ZtQHZnZXIua2VybmVsLm9yZwotLS0K IGluY2x1ZGUvbGludXgvbW0uaCB8ICAyICsrCiBtbS9tZW1vcnkuYyAgICAgICAgfCAzMiArKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrLQogbW0vbm9tbXUuYyAgICAgICAgIHwgMTcgKysr KysrKysrKysrKysrKysKIHNlY3VyaXR5L0tjb25maWcgICB8IDEzICsrKysrKysrKysrKysKIDQg ZmlsZXMgY2hhbmdlZCwgNjMgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdp dCBhL2luY2x1ZGUvbGludXgvbW0uaCBiL2luY2x1ZGUvbGludXgvbW0uaAppbmRleCAyYTE2NjMx YzFmZGEuLmVjOGM5MDkyOGZjOSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9tbS5oCisrKyBi L2luY2x1ZGUvbGludXgvbW0uaApAQCAtMTY1Myw2ICsxNjUzLDggQEAgaW50IGZvbGxvd19wdGVf cG1kKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCB1bnNpZ25lZCBsb25nIGFkZHJlc3MsCiAJCSAgIHB0 ZV90ICoqcHRlcHAsIHBtZF90ICoqcG1kcHAsIHNwaW5sb2NrX3QgKipwdGxwKTsKIGludCBmb2xs b3dfcGZuKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIGFkZHJlc3Ms CiAJdW5zaWduZWQgbG9uZyAqcGZuKTsKK2ludCB1bnNhZmVfZm9sbG93X3BmbihzdHJ1Y3Qgdm1f YXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZyBhZGRyZXNzLAorCQkgICAgICB1bnNpZ25l ZCBsb25nICpwZm4pOwogaW50IGZvbGxvd19waHlzKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1h LCB1bnNpZ25lZCBsb25nIGFkZHJlc3MsCiAJCXVuc2lnbmVkIGludCBmbGFncywgdW5zaWduZWQg bG9uZyAqcHJvdCwgcmVzb3VyY2Vfc2l6ZV90ICpwaHlzKTsKIGludCBnZW5lcmljX2FjY2Vzc19w aHlzKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIGFkZHIsCmRpZmYg LS1naXQgYS9tbS9tZW1vcnkuYyBiL21tL21lbW9yeS5jCmluZGV4IGY3Y2JjNGRkZTBlZi4uN2M3 YjIzNGZmYjI0IDEwMDY0NAotLS0gYS9tbS9tZW1vcnkuYworKysgYi9tbS9tZW1vcnkuYwpAQCAt NDgyMSw3ICs0ODIxLDEyIEBAIEVYUE9SVF9TWU1CT0woZm9sbG93X3B0ZV9wbWQpOwogICogQGFk ZHJlc3M6IHVzZXIgdmlydHVhbCBhZGRyZXNzCiAgKiBAcGZuOiBsb2NhdGlvbiB0byBzdG9yZSBm b3VuZCBQRk4KICAqCi0gKiBPbmx5IElPIG1hcHBpbmdzIGFuZCByYXcgUEZOIG1hcHBpbmdzIGFy ZSBhbGxvd2VkLgorICogT25seSBJTyBtYXBwaW5ncyBhbmQgcmF3IFBGTiBtYXBwaW5ncyBhcmUg YWxsb3dlZC4gTm90ZSB0aGF0IGNhbGxlcnMgbXVzdAorICogZW5zdXJlIGNvaGVyZW5jeSB3aXRo IHB0ZSB1cGRhdGVzIGJ5IHVzaW5nIGEgJm1tdV9ub3RpZmllciB0byBmb2xsb3cgdXBkYXRlcy4K KyAqIElmIHRoaXMgaXMgbm90IGZlYXNpYmxlLCBvciB0aGUgYWNjZXNzIHRvIHRoZSBAcGZuIGlz IG9ubHkgdmVyeSBzaG9ydCB0ZXJtLAorICogdXNlIGZvbGxvd19wdGVfcG1kKCkgaW5zdGVhZCBh bmQgaG9sZCB0aGUgcGFnZXRhYmxlIGxvY2sgZm9yIHRoZSBkdXJhdGlvbiBvZgorICogdGhlIGFj Y2VzcyBpbnN0ZWFkLiBBbnkgY2FsbGVyIG5vdCBmb2xsb3dpbmcgdGhlc2UgcmVxdWlyZW1lbnRz IG11c3QgdXNlCisgKiB1bnNhZmVfZm9sbG93X3BmbigpIGluc3RlYWQuCiAgKgogICogUmV0dXJu OiB6ZXJvIGFuZCB0aGUgcGZuIGF0IEBwZm4gb24gc3VjY2VzcywgLXZlIG90aGVyd2lzZS4KICAq LwpAQCAtNDg0NCw2ICs0ODQ5LDMxIEBAIGludCBmb2xsb3dfcGZuKHN0cnVjdCB2bV9hcmVhX3N0 cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIGFkZHJlc3MsCiB9CiBFWFBPUlRfU1lNQk9MKGZvbGxv d19wZm4pOwogCisvKioKKyAqIHVuc2FmZV9mb2xsb3dfcGZuIC0gbG9vayB1cCBQRk4gYXQgYSB1 c2VyIHZpcnR1YWwgYWRkcmVzcworICogQHZtYTogbWVtb3J5IG1hcHBpbmcKKyAqIEBhZGRyZXNz OiB1c2VyIHZpcnR1YWwgYWRkcmVzcworICogQHBmbjogbG9jYXRpb24gdG8gc3RvcmUgZm91bmQg UEZOCisgKgorICogT25seSBJTyBtYXBwaW5ncyBhbmQgcmF3IFBGTiBtYXBwaW5ncyBhcmUgYWxs b3dlZC4KKyAqCisgKiBSZXR1cm5zIHplcm8gYW5kIHRoZSBwZm4gYXQgQHBmbiBvbiBzdWNjZXNz LCAtdmUgb3RoZXJ3aXNlLgorICovCitpbnQgdW5zYWZlX2ZvbGxvd19wZm4oc3RydWN0IHZtX2Fy ZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgYWRkcmVzcywKKwl1bnNpZ25lZCBsb25nICpw Zm4pCit7CisjaWZkZWYgQ09ORklHX1NUUklDVF9GT0xMT1dfUEZOCisJcHJfaW5mbygidW5zYWZl IGZvbGxvd19wZm4gdXNhZ2UgcmVqZWN0ZWQsIHNlZSBDT05GSUdfU1RSSUNUX0ZPTExPV19QRk5c biIpOworCXJldHVybiAtRUlOVkFMOworI2Vsc2UKKwlXQVJOX09OQ0UoMSwgInVuc2FmZSBmb2xs b3dfcGZuIHVzYWdlXG4iKTsKKwlhZGRfdGFpbnQoVEFJTlRfVVNFUiwgTE9DS0RFUF9TVElMTF9P Syk7CisKKwlyZXR1cm4gZm9sbG93X3Bmbih2bWEsIGFkZHJlc3MsIHBmbik7CisjZW5kaWYKK30K K0VYUE9SVF9TWU1CT0wodW5zYWZlX2ZvbGxvd19wZm4pOworCiAjaWZkZWYgQ09ORklHX0hBVkVf SU9SRU1BUF9QUk9UCiBpbnQgZm9sbG93X3BoeXMoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEs CiAJCXVuc2lnbmVkIGxvbmcgYWRkcmVzcywgdW5zaWduZWQgaW50IGZsYWdzLApkaWZmIC0tZ2l0 IGEvbW0vbm9tbXUuYyBiL21tL25vbW11LmMKaW5kZXggNzVhMzI3MTQ5YWYxLi4zZGIyOTEwZjBk NjQgMTAwNjQ0Ci0tLSBhL21tL25vbW11LmMKKysrIGIvbW0vbm9tbXUuYwpAQCAtMTMyLDYgKzEz MiwyMyBAQCBpbnQgZm9sbG93X3BmbihzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWdu ZWQgbG9uZyBhZGRyZXNzLAogfQogRVhQT1JUX1NZTUJPTChmb2xsb3dfcGZuKTsKIAorLyoqCisg KiB1bnNhZmVfZm9sbG93X3BmbiAtIGxvb2sgdXAgUEZOIGF0IGEgdXNlciB2aXJ0dWFsIGFkZHJl c3MKKyAqIEB2bWE6IG1lbW9yeSBtYXBwaW5nCisgKiBAYWRkcmVzczogdXNlciB2aXJ0dWFsIGFk ZHJlc3MKKyAqIEBwZm46IGxvY2F0aW9uIHRvIHN0b3JlIGZvdW5kIFBGTgorICoKKyAqIE9ubHkg SU8gbWFwcGluZ3MgYW5kIHJhdyBQRk4gbWFwcGluZ3MgYXJlIGFsbG93ZWQuCisgKgorICogUmV0 dXJucyB6ZXJvIGFuZCB0aGUgcGZuIGF0IEBwZm4gb24gc3VjY2VzcywgLXZlIG90aGVyd2lzZS4K KyAqLworaW50IHVuc2FmZV9mb2xsb3dfcGZuKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1 bnNpZ25lZCBsb25nIGFkZHJlc3MsCisJdW5zaWduZWQgbG9uZyAqcGZuKQoreworCXJldHVybiBm b2xsb3dfcGZuKHZtYSwgYWRkcmVzcywgcGZuKTsKK30KK0VYUE9SVF9TWU1CT0wodW5zYWZlX2Zv bGxvd19wZm4pOworCiBMSVNUX0hFQUQodm1hcF9hcmVhX2xpc3QpOwogCiB2b2lkIHZmcmVlKGNv bnN0IHZvaWQgKmFkZHIpCmRpZmYgLS1naXQgYS9zZWN1cml0eS9LY29uZmlnIGIvc2VjdXJpdHkv S2NvbmZpZwppbmRleCA3NTYxZjZmOTlmMWQuLjQ4OTQ1NDAyZTEwMyAxMDA2NDQKLS0tIGEvc2Vj dXJpdHkvS2NvbmZpZworKysgYi9zZWN1cml0eS9LY29uZmlnCkBAIC0yMzAsNiArMjMwLDE5IEBA IGNvbmZpZyBTVEFUSUNfVVNFUk1PREVIRUxQRVJfUEFUSAogCSAgSWYgeW91IHdpc2ggZm9yIGFs bCB1c2VybW9kZSBoZWxwZXIgcHJvZ3JhbXMgdG8gYmUgZGlzYWJsZWQsCiAJICBzcGVjaWZ5IGFu IGVtcHR5IHN0cmluZyBoZXJlIChpLmUuICIiKS4KIAorY29uZmlnIFNUUklDVF9GT0xMT1dfUEZO CisJYm9vbCAiRGlzYWJsZSB1bnNhZmUgdXNlIG9mIGZvbGxvd19wZm4iCisJZGVwZW5kcyBvbiBN TVUKKwloZWxwCisJICBTb21lIGZ1bmN0aW9uYWxpdHkgaW4gdGhlIGtlcm5lbCBmb2xsb3dzIHVz ZXJzcGFjZSBtYXBwaW5ncyB0byBpb21lbQorCSAgcmFuZ2VzIGluIGFuIHVuc2FmZSBtYXR0ZXIu IEV4YW1wbGVzIGluY2x1ZGUgdjRsIHVzZXJwdHIgZm9yIHplcm8tY29weQorCSAgYnVmZmVycyBz aGFyaW5nLgorCisJICBJZiB0aGlzIG9wdGlvbiBpcyBzd2l0Y2hlZCBvbiwgc3VjaCBhY2Nlc3Mg aXMgcmVqZWN0ZWQuIE9ubHkgZW5hYmxlCisJICB0aGlzIG9wdGlvbiB3aGVuIHlvdSBtdXN0IHJ1 biB1c2Vyc3BhY2Ugd2hpY2ggcmVxdWlyZXMgdGhpcy4KKworCSAgSWYgaW4gZG91YnQsIHNheSBZ LgorCiBzb3VyY2UgInNlY3VyaXR5L3NlbGludXgvS2NvbmZpZyIKIHNvdXJjZSAic2VjdXJpdHkv c21hY2svS2NvbmZpZyIKIHNvdXJjZSAic2VjdXJpdHkvdG9tb3lvL0tjb25maWciCi0tIAoyLjI4 LjAKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51 eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVh ZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1h cm0ta2VybmVsCg== 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=-12.5 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT 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 AF9B6C35268 for ; Fri, 9 Oct 2020 08:00:22 +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 44806222B8 for ; Fri, 9 Oct 2020 08:00:22 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=ffwll.ch header.i=@ffwll.ch header.b="V5TBVRBR" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 44806222B8 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=ffwll.ch 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 AD7526EC82; Fri, 9 Oct 2020 08:00:13 +0000 (UTC) Received: from mail-wr1-x444.google.com (mail-wr1-x444.google.com [IPv6:2a00:1450:4864:20::444]) by gabe.freedesktop.org (Postfix) with ESMTPS id D945B6EC77 for ; Fri, 9 Oct 2020 08:00:06 +0000 (UTC) Received: by mail-wr1-x444.google.com with SMTP id e18so9230811wrw.9 for ; Fri, 09 Oct 2020 01:00:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ffwll.ch; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=8IYpHoJKMEBqVJFoX6/iQeVme5ZF9eX1Ohz2yNiHkQw=; b=V5TBVRBRPN9edskHpLIv3qmr2Zi6EnQTVoAOTYgk7+BRq1KKIWa6q7mFJLoiALOuq2 CiqW3BZJxAJ4YMUa4ZyS65/c95SC2xcHnGWLTTvFB5DwSik8w/WDrfvFoJYcLhqlXfuC +NDRoziDxLuuf934gZwN0eu3ic7vtvcSJxqcY= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=8IYpHoJKMEBqVJFoX6/iQeVme5ZF9eX1Ohz2yNiHkQw=; b=HzfAI9zLYb2l5WG6GoF3YOH7peX+YvEkghzNmtqSP2rKOBcUu57wPLbvHKuY357bG/ mBqF2iJlSjqsmtE3kupiXXKgiTnBa1FD/9BJYCTLEsvqVC1ATc+IPVwVmUETcaHXIgqJ NjA1Xq68H7c+U9Rn3w2bFOYQRLvw3T3iulkJHqF3S4PhMH7lvh1hQxK7Z3ih/uGDH1WI OBbjQFpcX1Wj4z+LJI8M3X8C/EtMobGoDYGkbIwg3LYZEDQLFJJ3hkATy/ka3xfMZSMj 8okzdos6AqniCKUAdFtAWBnZrVi+lMunJSuFsJaG5YZDwjl3SR6D7BwMNKG530R5GmSH 4F9g== X-Gm-Message-State: AOAM5319tP+qjXAKpGvTDxpZvD6R65TTBO7SPtv88O5+NO/YxS77Lm2k 0MRnUDx7+0p1IOcVIf5sXoz2A0j5aBhzmpa7 X-Google-Smtp-Source: ABdhPJxzUQTqOJAIzZm/ndkz80IFBZnJ5bzyw+53Ch4riLtBtEjBnNhRxlpbdicdKJrL10CrNuYvdA== X-Received: by 2002:a5d:5106:: with SMTP id s6mr13282446wrt.51.1602230405123; Fri, 09 Oct 2020 01:00:05 -0700 (PDT) Received: from phenom.ffwll.local ([2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa]) by smtp.gmail.com with ESMTPSA id u17sm11634118wri.45.2020.10.09.01.00.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 09 Oct 2020 01:00:04 -0700 (PDT) From: Daniel Vetter To: DRI Development , LKML Subject: [PATCH v2 09/17] mm: Add unsafe_follow_pfn Date: Fri, 9 Oct 2020 09:59:26 +0200 Message-Id: <20201009075934.3509076-10-daniel.vetter@ffwll.ch> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20201009075934.3509076-1-daniel.vetter@ffwll.ch> References: <20201009075934.3509076-1-daniel.vetter@ffwll.ch> 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 , Daniel Vetter , linux-mm@kvack.org, =?UTF-8?q?J=C3=A9r=C3=B4me=20Glisse?= , John Hubbard , Daniel Vetter , Dan Williams , 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" V2F5IGJhY2sgaXQgd2FzIGEgcmVhc29uYWJsZSBhc3N1bXB0aW9ucyB0aGF0IGlvbWVtIG1hcHBp bmdzIG5ldmVyCmNoYW5nZSB0aGUgcGZuIHJhbmdlIHRoZXkgcG9pbnQgYXQuIEJ1dCB0aGlzIGhh cyBjaGFuZ2VkOgoKLSBncHUgZHJpdmVycyBkeW5hbWljYWxseSBtYW5hZ2UgdGhlaXIgbWVtb3J5 IG5vd2FkYXlzLCBpbnZhbGlkYXRpbmcKcHRlcyB3aXRoIHVubWFwX21hcHBpbmdfcmFuZ2Ugd2hl biBidWZmZXJzIGdldCBtb3ZlZAoKLSBjb250aWd1b3VzIGRtYSBhbGxvY2F0aW9ucyBoYXZlIG1v dmVkIGZyb20gZGVkaWNhdGVkIGNhcnZldG91dHMgdG8KY21hIHJlZ2lvbnMuIFRoaXMgbWVhbnMg aWYgd2UgbWlzcyB0aGUgdW5tYXAgdGhlIHBmbiBtaWdodCBjb250YWluCnBhZ2VjYWNoZSBvciBh bm9uIG1lbW9yeSAod2VsbCBhbnl0aGluZyBhbGxvY2F0ZWQgd2l0aCBHRlBfTU9WRUFCTEUpCgot IGV2ZW4gL2Rldi9tZW0gbm93IGludmFsaWRhdGVzIG1hcHBpbmdzIHdoZW4gdGhlIGtlcm5lbCBy ZXF1ZXN0cyB0aGF0CmlvbWVtIHJlZ2lvbiB3aGVuIENPTkZJR19JT19TVFJJQ1RfREVWTUVNIGlz IHNldCwgc2VlIDMyMzRhYzY2NGE4NwooIi9kZXYvbWVtOiBSZXZva2UgbWFwcGluZ3Mgd2hlbiBh IGRyaXZlciBjbGFpbXMgdGhlIHJlZ2lvbiIpCgpBY2Nlc3NpbmcgcGZucyBvYnRhaW5lZCBmcm9t IHB0ZXMgd2l0aG91dCBob2xkaW5nIGFsbCB0aGUgbG9ja3MgaXMKdGhlcmVmb3JlIG5vIGxvbmdl ciBhIGdvb2QgaWRlYS4KClVuZm9ydHVuYXRlbHkgdGhlcmUncyBzb21lIHVzZXJzIHdoZXJlIHRo aXMgaXMgbm90IGZpeGFibGUgKGxpa2UgdjRsCnVzZXJwdHIgb2YgaW9tZW0gbWFwcGluZ3MpIG9y IGludm9sdmVzIGEgcGlsZSBvZiB3b3JrICh2ZmlvIHR5cGUxCmlvbW11KS4gRm9yIG5vdyBhbm5v dGF0ZSB0aGVzZSBhcyB1bnNhZmUgYW5kIHNwbGF0IGFwcHJvcHJpYXRlbHkuCgpUaGlzIHBhdGNo IGFkZHMgYW4gdW5zYWZlX2ZvbGxvd19wZm4sIHdoaWNoIGxhdGVyIHBhdGNoZXMgd2lsbCB0aGVu CnJvbGwgb3V0IHRvIGFsbCBhcHByb3ByaWF0ZSBwbGFjZXMuCgpTaWduZWQtb2ZmLWJ5OiBEYW5p ZWwgVmV0dGVyIDxkYW5pZWwudmV0dGVyQGludGVsLmNvbT4KQ2M6IEphc29uIEd1bnRob3JwZSA8 amdnQHppZXBlLmNhPgpDYzogS2VlcyBDb29rIDxrZWVzY29va0BjaHJvbWl1bS5vcmc+CkNjOiBE YW4gV2lsbGlhbXMgPGRhbi5qLndpbGxpYW1zQGludGVsLmNvbT4KQ2M6IEFuZHJldyBNb3J0b24g PGFrcG1AbGludXgtZm91bmRhdGlvbi5vcmc+CkNjOiBKb2huIEh1YmJhcmQgPGpodWJiYXJkQG52 aWRpYS5jb20+CkNjOiBKw6lyw7RtZSBHbGlzc2UgPGpnbGlzc2VAcmVkaGF0LmNvbT4KQ2M6IEph biBLYXJhIDxqYWNrQHN1c2UuY3o+CkNjOiBEYW4gV2lsbGlhbXMgPGRhbi5qLndpbGxpYW1zQGlu dGVsLmNvbT4KQ2M6IGxpbnV4LW1tQGt2YWNrLm9yZwpDYzogbGludXgtYXJtLWtlcm5lbEBsaXN0 cy5pbmZyYWRlYWQub3JnCkNjOiBsaW51eC1zYW1zdW5nLXNvY0B2Z2VyLmtlcm5lbC5vcmcKQ2M6 IGxpbnV4LW1lZGlhQHZnZXIua2VybmVsLm9yZwpDYzoga3ZtQHZnZXIua2VybmVsLm9yZwotLS0K IGluY2x1ZGUvbGludXgvbW0uaCB8ICAyICsrCiBtbS9tZW1vcnkuYyAgICAgICAgfCAzMiArKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrLQogbW0vbm9tbXUuYyAgICAgICAgIHwgMTcgKysr KysrKysrKysrKysrKysKIHNlY3VyaXR5L0tjb25maWcgICB8IDEzICsrKysrKysrKysrKysKIDQg ZmlsZXMgY2hhbmdlZCwgNjMgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdp dCBhL2luY2x1ZGUvbGludXgvbW0uaCBiL2luY2x1ZGUvbGludXgvbW0uaAppbmRleCAyYTE2NjMx YzFmZGEuLmVjOGM5MDkyOGZjOSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9tbS5oCisrKyBi L2luY2x1ZGUvbGludXgvbW0uaApAQCAtMTY1Myw2ICsxNjUzLDggQEAgaW50IGZvbGxvd19wdGVf cG1kKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCB1bnNpZ25lZCBsb25nIGFkZHJlc3MsCiAJCSAgIHB0 ZV90ICoqcHRlcHAsIHBtZF90ICoqcG1kcHAsIHNwaW5sb2NrX3QgKipwdGxwKTsKIGludCBmb2xs b3dfcGZuKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIGFkZHJlc3Ms CiAJdW5zaWduZWQgbG9uZyAqcGZuKTsKK2ludCB1bnNhZmVfZm9sbG93X3BmbihzdHJ1Y3Qgdm1f YXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZyBhZGRyZXNzLAorCQkgICAgICB1bnNpZ25l ZCBsb25nICpwZm4pOwogaW50IGZvbGxvd19waHlzKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1h LCB1bnNpZ25lZCBsb25nIGFkZHJlc3MsCiAJCXVuc2lnbmVkIGludCBmbGFncywgdW5zaWduZWQg bG9uZyAqcHJvdCwgcmVzb3VyY2Vfc2l6ZV90ICpwaHlzKTsKIGludCBnZW5lcmljX2FjY2Vzc19w aHlzKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIGFkZHIsCmRpZmYg LS1naXQgYS9tbS9tZW1vcnkuYyBiL21tL21lbW9yeS5jCmluZGV4IGY3Y2JjNGRkZTBlZi4uN2M3 YjIzNGZmYjI0IDEwMDY0NAotLS0gYS9tbS9tZW1vcnkuYworKysgYi9tbS9tZW1vcnkuYwpAQCAt NDgyMSw3ICs0ODIxLDEyIEBAIEVYUE9SVF9TWU1CT0woZm9sbG93X3B0ZV9wbWQpOwogICogQGFk ZHJlc3M6IHVzZXIgdmlydHVhbCBhZGRyZXNzCiAgKiBAcGZuOiBsb2NhdGlvbiB0byBzdG9yZSBm b3VuZCBQRk4KICAqCi0gKiBPbmx5IElPIG1hcHBpbmdzIGFuZCByYXcgUEZOIG1hcHBpbmdzIGFy ZSBhbGxvd2VkLgorICogT25seSBJTyBtYXBwaW5ncyBhbmQgcmF3IFBGTiBtYXBwaW5ncyBhcmUg YWxsb3dlZC4gTm90ZSB0aGF0IGNhbGxlcnMgbXVzdAorICogZW5zdXJlIGNvaGVyZW5jeSB3aXRo IHB0ZSB1cGRhdGVzIGJ5IHVzaW5nIGEgJm1tdV9ub3RpZmllciB0byBmb2xsb3cgdXBkYXRlcy4K KyAqIElmIHRoaXMgaXMgbm90IGZlYXNpYmxlLCBvciB0aGUgYWNjZXNzIHRvIHRoZSBAcGZuIGlz IG9ubHkgdmVyeSBzaG9ydCB0ZXJtLAorICogdXNlIGZvbGxvd19wdGVfcG1kKCkgaW5zdGVhZCBh bmQgaG9sZCB0aGUgcGFnZXRhYmxlIGxvY2sgZm9yIHRoZSBkdXJhdGlvbiBvZgorICogdGhlIGFj Y2VzcyBpbnN0ZWFkLiBBbnkgY2FsbGVyIG5vdCBmb2xsb3dpbmcgdGhlc2UgcmVxdWlyZW1lbnRz IG11c3QgdXNlCisgKiB1bnNhZmVfZm9sbG93X3BmbigpIGluc3RlYWQuCiAgKgogICogUmV0dXJu OiB6ZXJvIGFuZCB0aGUgcGZuIGF0IEBwZm4gb24gc3VjY2VzcywgLXZlIG90aGVyd2lzZS4KICAq LwpAQCAtNDg0NCw2ICs0ODQ5LDMxIEBAIGludCBmb2xsb3dfcGZuKHN0cnVjdCB2bV9hcmVhX3N0 cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIGFkZHJlc3MsCiB9CiBFWFBPUlRfU1lNQk9MKGZvbGxv d19wZm4pOwogCisvKioKKyAqIHVuc2FmZV9mb2xsb3dfcGZuIC0gbG9vayB1cCBQRk4gYXQgYSB1 c2VyIHZpcnR1YWwgYWRkcmVzcworICogQHZtYTogbWVtb3J5IG1hcHBpbmcKKyAqIEBhZGRyZXNz OiB1c2VyIHZpcnR1YWwgYWRkcmVzcworICogQHBmbjogbG9jYXRpb24gdG8gc3RvcmUgZm91bmQg UEZOCisgKgorICogT25seSBJTyBtYXBwaW5ncyBhbmQgcmF3IFBGTiBtYXBwaW5ncyBhcmUgYWxs b3dlZC4KKyAqCisgKiBSZXR1cm5zIHplcm8gYW5kIHRoZSBwZm4gYXQgQHBmbiBvbiBzdWNjZXNz LCAtdmUgb3RoZXJ3aXNlLgorICovCitpbnQgdW5zYWZlX2ZvbGxvd19wZm4oc3RydWN0IHZtX2Fy ZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgYWRkcmVzcywKKwl1bnNpZ25lZCBsb25nICpw Zm4pCit7CisjaWZkZWYgQ09ORklHX1NUUklDVF9GT0xMT1dfUEZOCisJcHJfaW5mbygidW5zYWZl IGZvbGxvd19wZm4gdXNhZ2UgcmVqZWN0ZWQsIHNlZSBDT05GSUdfU1RSSUNUX0ZPTExPV19QRk5c biIpOworCXJldHVybiAtRUlOVkFMOworI2Vsc2UKKwlXQVJOX09OQ0UoMSwgInVuc2FmZSBmb2xs b3dfcGZuIHVzYWdlXG4iKTsKKwlhZGRfdGFpbnQoVEFJTlRfVVNFUiwgTE9DS0RFUF9TVElMTF9P Syk7CisKKwlyZXR1cm4gZm9sbG93X3Bmbih2bWEsIGFkZHJlc3MsIHBmbik7CisjZW5kaWYKK30K K0VYUE9SVF9TWU1CT0wodW5zYWZlX2ZvbGxvd19wZm4pOworCiAjaWZkZWYgQ09ORklHX0hBVkVf SU9SRU1BUF9QUk9UCiBpbnQgZm9sbG93X3BoeXMoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEs CiAJCXVuc2lnbmVkIGxvbmcgYWRkcmVzcywgdW5zaWduZWQgaW50IGZsYWdzLApkaWZmIC0tZ2l0 IGEvbW0vbm9tbXUuYyBiL21tL25vbW11LmMKaW5kZXggNzVhMzI3MTQ5YWYxLi4zZGIyOTEwZjBk NjQgMTAwNjQ0Ci0tLSBhL21tL25vbW11LmMKKysrIGIvbW0vbm9tbXUuYwpAQCAtMTMyLDYgKzEz MiwyMyBAQCBpbnQgZm9sbG93X3BmbihzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWdu ZWQgbG9uZyBhZGRyZXNzLAogfQogRVhQT1JUX1NZTUJPTChmb2xsb3dfcGZuKTsKIAorLyoqCisg KiB1bnNhZmVfZm9sbG93X3BmbiAtIGxvb2sgdXAgUEZOIGF0IGEgdXNlciB2aXJ0dWFsIGFkZHJl c3MKKyAqIEB2bWE6IG1lbW9yeSBtYXBwaW5nCisgKiBAYWRkcmVzczogdXNlciB2aXJ0dWFsIGFk ZHJlc3MKKyAqIEBwZm46IGxvY2F0aW9uIHRvIHN0b3JlIGZvdW5kIFBGTgorICoKKyAqIE9ubHkg SU8gbWFwcGluZ3MgYW5kIHJhdyBQRk4gbWFwcGluZ3MgYXJlIGFsbG93ZWQuCisgKgorICogUmV0 dXJucyB6ZXJvIGFuZCB0aGUgcGZuIGF0IEBwZm4gb24gc3VjY2VzcywgLXZlIG90aGVyd2lzZS4K KyAqLworaW50IHVuc2FmZV9mb2xsb3dfcGZuKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1 bnNpZ25lZCBsb25nIGFkZHJlc3MsCisJdW5zaWduZWQgbG9uZyAqcGZuKQoreworCXJldHVybiBm b2xsb3dfcGZuKHZtYSwgYWRkcmVzcywgcGZuKTsKK30KK0VYUE9SVF9TWU1CT0wodW5zYWZlX2Zv bGxvd19wZm4pOworCiBMSVNUX0hFQUQodm1hcF9hcmVhX2xpc3QpOwogCiB2b2lkIHZmcmVlKGNv bnN0IHZvaWQgKmFkZHIpCmRpZmYgLS1naXQgYS9zZWN1cml0eS9LY29uZmlnIGIvc2VjdXJpdHkv S2NvbmZpZwppbmRleCA3NTYxZjZmOTlmMWQuLjQ4OTQ1NDAyZTEwMyAxMDA2NDQKLS0tIGEvc2Vj dXJpdHkvS2NvbmZpZworKysgYi9zZWN1cml0eS9LY29uZmlnCkBAIC0yMzAsNiArMjMwLDE5IEBA IGNvbmZpZyBTVEFUSUNfVVNFUk1PREVIRUxQRVJfUEFUSAogCSAgSWYgeW91IHdpc2ggZm9yIGFs bCB1c2VybW9kZSBoZWxwZXIgcHJvZ3JhbXMgdG8gYmUgZGlzYWJsZWQsCiAJICBzcGVjaWZ5IGFu IGVtcHR5IHN0cmluZyBoZXJlIChpLmUuICIiKS4KIAorY29uZmlnIFNUUklDVF9GT0xMT1dfUEZO CisJYm9vbCAiRGlzYWJsZSB1bnNhZmUgdXNlIG9mIGZvbGxvd19wZm4iCisJZGVwZW5kcyBvbiBN TVUKKwloZWxwCisJICBTb21lIGZ1bmN0aW9uYWxpdHkgaW4gdGhlIGtlcm5lbCBmb2xsb3dzIHVz ZXJzcGFjZSBtYXBwaW5ncyB0byBpb21lbQorCSAgcmFuZ2VzIGluIGFuIHVuc2FmZSBtYXR0ZXIu IEV4YW1wbGVzIGluY2x1ZGUgdjRsIHVzZXJwdHIgZm9yIHplcm8tY29weQorCSAgYnVmZmVycyBz aGFyaW5nLgorCisJICBJZiB0aGlzIG9wdGlvbiBpcyBzd2l0Y2hlZCBvbiwgc3VjaCBhY2Nlc3Mg aXMgcmVqZWN0ZWQuIE9ubHkgZW5hYmxlCisJICB0aGlzIG9wdGlvbiB3aGVuIHlvdSBtdXN0IHJ1 biB1c2Vyc3BhY2Ugd2hpY2ggcmVxdWlyZXMgdGhpcy4KKworCSAgSWYgaW4gZG91YnQsIHNheSBZ LgorCiBzb3VyY2UgInNlY3VyaXR5L3NlbGludXgvS2NvbmZpZyIKIHNvdXJjZSAic2VjdXJpdHkv c21hY2svS2NvbmZpZyIKIHNvdXJjZSAic2VjdXJpdHkvdG9tb3lvL0tjb25maWciCi0tIAoyLjI4 LjAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1k ZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczov L2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=