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=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 164B9C64E8A for ; Mon, 26 Oct 2020 10:58:45 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id C6F782225C for ; Mon, 26 Oct 2020 10:58:44 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=ffwll.ch header.i=@ffwll.ch header.b="LeOH7Nu7" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1772831AbgJZK6n (ORCPT ); Mon, 26 Oct 2020 06:58:43 -0400 Received: from mail-wm1-f68.google.com ([209.85.128.68]:35869 "EHLO mail-wm1-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1772792AbgJZK6l (ORCPT ); Mon, 26 Oct 2020 06:58:41 -0400 Received: by mail-wm1-f68.google.com with SMTP id e2so11985495wme.1 for ; Mon, 26 Oct 2020 03:58:37 -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=Jw8O4zHShCAt4bi/mdSwE8pqaQ/Ci7nnAmM3jj6tKas=; b=LeOH7Nu7nYyzs6z+/KfV+foE7RZUakypEXEfU/vXenF6NA90yn3buwHE0Uu6W+NU5m Hi0AM14GFSueByuFTd94ZbnLe28erHjzsMvKFy0Os9VwT8Ga/ABZUV2quSB96oh4ck2n HGBn3CIltcz0TR3fcsi6KP6WJJBm9e95NWE9o= 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=Jw8O4zHShCAt4bi/mdSwE8pqaQ/Ci7nnAmM3jj6tKas=; b=YWKqjUa1ExLfMcfd3e6MCDxUVLwCT8J+WLi1rNEa/kizt0YXcWfxaFgp99UDCzdJIE R0QxvWJ0bWDDDXcQtNw+5l6qN6TlxFpWLRs8kirLliQqYsGuEdVm2sHiGPxdv58XCTVx LU6WRWszmkBxv6fDMt+oUX23UvldaUbt15mBgY3ILcftf0DbK4U+pw6qT/tkSuMmlOMC zkZVMfc+PH7sosSY4H8J+ACcP0Xept3txQ1JDYpqgJZCl5VIpwn0vPcB3Qk9XYbLqUak erizCncDB2FdABDujhJ6Q0eoCXmaNkVzHPGHdCU60WvAo3Nrr3iv5h5ZrH1MpJuzUVoS saPA== X-Gm-Message-State: AOAM53092E6a+fZwlNdvyopG+prq6eV86Czn31vdLTO/OxQl17wOwrwS OxPtWO4u2ZAKyfYrkaRBDEtV0g== X-Google-Smtp-Source: ABdhPJwBkNEqxu0ChR0X2FBJPl4+XpnvlFPrjyvJkxjB1QLwg8t+SYJeWTboLEwPxYM+uDVWyRzgsA== X-Received: by 2002:a1c:6643:: with SMTP id a64mr15848860wmc.142.1603709916809; Mon, 26 Oct 2020 03:58:36 -0700 (PDT) Received: from phenom.ffwll.local ([2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa]) by smtp.gmail.com with ESMTPSA id w83sm21165156wmg.48.2020.10.26.03.58.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 26 Oct 2020 03:58:36 -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 v4 08/15] mm: Add unsafe_follow_pfn Date: Mon, 26 Oct 2020 11:58:11 +0100 Message-Id: <20201026105818.2585306-9-daniel.vetter@ffwll.ch> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20201026105818.2585306-1-daniel.vetter@ffwll.ch> References: <20201026105818.2585306-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 Signed-off-by: Daniel Vetter --- 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 1b46eae3b703..9a2ec07ff20b 100644 --- a/mm/memory.c +++ b/mm/memory.c @@ -4788,7 +4788,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. */ @@ -4811,6 +4816,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 7AB00C4363A for ; Mon, 26 Oct 2020 11:02:51 +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 1BED0207DE for ; Mon, 26 Oct 2020 11:02:51 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="OMdjUKex"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=ffwll.ch header.i=@ffwll.ch header.b="LeOH7Nu7" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 1BED0207DE 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=FRzAjXUYK4b/b+jbjQ9QjfRtb7zu0UxkM58YxooGhRg=; b=OMdjUKexL4qgOKT8WzvedgF+6 3g/iMXn+trgC4H5MEqnVx89Wiwz3LQNQ98zs/tliODYWwmCTnqrkiBISGV26wBjheXvu1TVJza7Qy js3hV1WhVoJFUBLxubLrDBryjjl1UCp/tsWiH8me6IgzV8ln9rjH6Ar4KkqmlxLt+qqyrVuNCz8Ob JaX3lMvNk4UvL9YaPAu4mLG0/x7jIGnEVPLCtbxVCLAslqXrZ74nFJPPvQuvaOKfnnp3ih4HjXM6q ZerqTBfDu56YQZaBPgODif4ezn5TQzLQijFn82O+RUWfMFoSz89LL2F+LtaT/UuwbqUBoeD2M42Nw JdzLiXXDw==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1kX0F8-0002uL-D1; Mon, 26 Oct 2020 11:00:50 +0000 Received: from mail-wm1-x343.google.com ([2a00:1450:4864:20::343]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1kX0Cz-0001zZ-S6 for linux-arm-kernel@lists.infradead.org; Mon, 26 Oct 2020 10:58:49 +0000 Received: by mail-wm1-x343.google.com with SMTP id 13so11145144wmf.0 for ; Mon, 26 Oct 2020 03:58:37 -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=Jw8O4zHShCAt4bi/mdSwE8pqaQ/Ci7nnAmM3jj6tKas=; b=LeOH7Nu7nYyzs6z+/KfV+foE7RZUakypEXEfU/vXenF6NA90yn3buwHE0Uu6W+NU5m Hi0AM14GFSueByuFTd94ZbnLe28erHjzsMvKFy0Os9VwT8Ga/ABZUV2quSB96oh4ck2n HGBn3CIltcz0TR3fcsi6KP6WJJBm9e95NWE9o= 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=Jw8O4zHShCAt4bi/mdSwE8pqaQ/Ci7nnAmM3jj6tKas=; b=YvdMZuAk0QVZA81sbgC+Euw3vrAuUbE9NlDdgOVZgzu3BcCHbkXMLQvxKy/FWJfLCh yheTPl7RWeyrYV4sRlqwwejbFSN992aA0/edhF8CdwAJb7tnmL+UMGSAUOj1eooHiZU0 4lAuUFrY07oz8H+6esHSSaVk8oTHd+mqHYCJgknalBfqQCWgGGwyhO4yIQAtJdbjsLpn u0S26la0tS7Ka89+rSptTixwmPaejrq1dz9NeUEPe0+6Xq8p4luPhVdPzwvH5xbm3vJv j3bBRtWifWWBYaRZljMg/OVqN7C8lFnyTZVdREdHhZC5etzEA7HWEBYGlrKcWw6tMc9P rF4Q== X-Gm-Message-State: AOAM533lktXMNs5mRvzLZY6oZmpNZeDlOPYQpnGCxBo4ih9YZUOM3IwT Ll0waBSgLfC7bT1MKxrJQI5cCQ== X-Google-Smtp-Source: ABdhPJwBkNEqxu0ChR0X2FBJPl4+XpnvlFPrjyvJkxjB1QLwg8t+SYJeWTboLEwPxYM+uDVWyRzgsA== X-Received: by 2002:a1c:6643:: with SMTP id a64mr15848860wmc.142.1603709916809; Mon, 26 Oct 2020 03:58:36 -0700 (PDT) Received: from phenom.ffwll.local ([2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa]) by smtp.gmail.com with ESMTPSA id w83sm21165156wmg.48.2020.10.26.03.58.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 26 Oct 2020 03:58:36 -0700 (PDT) From: Daniel Vetter To: DRI Development , LKML Subject: [PATCH v4 08/15] mm: Add unsafe_follow_pfn Date: Mon, 26 Oct 2020 11:58:11 +0100 Message-Id: <20201026105818.2585306-9-daniel.vetter@ffwll.ch> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20201026105818.2585306-1-daniel.vetter@ffwll.ch> References: <20201026105818.2585306-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-20201026_065838_194374_F4659E49 X-CRM114-Status: GOOD ( 21.98 ) 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 IGxpbnV4LW1lZGlhQHZnZXIua2VybmVsLm9yZwpDYzoga3ZtQHZnZXIua2VybmVsLm9yZwpTaWdu ZWQtb2ZmLWJ5OiBEYW5pZWwgVmV0dGVyIDxkYW5pZWwudmV0dGVyQGZmd2xsLmNoPgotLS0KIGlu Y2x1ZGUvbGludXgvbW0uaCB8ICAyICsrCiBtbS9tZW1vcnkuYyAgICAgICAgfCAzMiArKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrLQogbW0vbm9tbXUuYyAgICAgICAgIHwgMTcgKysrKysr KysrKysrKysrKysKIHNlY3VyaXR5L0tjb25maWcgICB8IDEzICsrKysrKysrKysrKysKIDQgZmls ZXMgY2hhbmdlZCwgNjMgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBh L2luY2x1ZGUvbGludXgvbW0uaCBiL2luY2x1ZGUvbGludXgvbW0uaAppbmRleCAyYTE2NjMxYzFm ZGEuLmVjOGM5MDkyOGZjOSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9tbS5oCisrKyBiL2lu Y2x1ZGUvbGludXgvbW0uaApAQCAtMTY1Myw2ICsxNjUzLDggQEAgaW50IGZvbGxvd19wdGVfcG1k KHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCB1bnNpZ25lZCBsb25nIGFkZHJlc3MsCiAJCSAgIHB0ZV90 ICoqcHRlcHAsIHBtZF90ICoqcG1kcHAsIHNwaW5sb2NrX3QgKipwdGxwKTsKIGludCBmb2xsb3df cGZuKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIGFkZHJlc3MsCiAJ dW5zaWduZWQgbG9uZyAqcGZuKTsKK2ludCB1bnNhZmVfZm9sbG93X3BmbihzdHJ1Y3Qgdm1fYXJl YV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZyBhZGRyZXNzLAorCQkgICAgICB1bnNpZ25lZCBs b25nICpwZm4pOwogaW50IGZvbGxvd19waHlzKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1 bnNpZ25lZCBsb25nIGFkZHJlc3MsCiAJCXVuc2lnbmVkIGludCBmbGFncywgdW5zaWduZWQgbG9u ZyAqcHJvdCwgcmVzb3VyY2Vfc2l6ZV90ICpwaHlzKTsKIGludCBnZW5lcmljX2FjY2Vzc19waHlz KHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIGFkZHIsCmRpZmYgLS1n aXQgYS9tbS9tZW1vcnkuYyBiL21tL21lbW9yeS5jCmluZGV4IDFiNDZlYWUzYjcwMy4uOWEyZWMw N2ZmMjBiIDEwMDY0NAotLS0gYS9tbS9tZW1vcnkuYworKysgYi9tbS9tZW1vcnkuYwpAQCAtNDc4 OCw3ICs0Nzg4LDEyIEBAIEVYUE9SVF9TWU1CT0woZm9sbG93X3B0ZV9wbWQpOwogICogQGFkZHJl c3M6IHVzZXIgdmlydHVhbCBhZGRyZXNzCiAgKiBAcGZuOiBsb2NhdGlvbiB0byBzdG9yZSBmb3Vu ZCBQRk4KICAqCi0gKiBPbmx5IElPIG1hcHBpbmdzIGFuZCByYXcgUEZOIG1hcHBpbmdzIGFyZSBh bGxvd2VkLgorICogT25seSBJTyBtYXBwaW5ncyBhbmQgcmF3IFBGTiBtYXBwaW5ncyBhcmUgYWxs b3dlZC4gTm90ZSB0aGF0IGNhbGxlcnMgbXVzdAorICogZW5zdXJlIGNvaGVyZW5jeSB3aXRoIHB0 ZSB1cGRhdGVzIGJ5IHVzaW5nIGEgJm1tdV9ub3RpZmllciB0byBmb2xsb3cgdXBkYXRlcy4KKyAq IElmIHRoaXMgaXMgbm90IGZlYXNpYmxlLCBvciB0aGUgYWNjZXNzIHRvIHRoZSBAcGZuIGlzIG9u bHkgdmVyeSBzaG9ydCB0ZXJtLAorICogdXNlIGZvbGxvd19wdGVfcG1kKCkgaW5zdGVhZCBhbmQg aG9sZCB0aGUgcGFnZXRhYmxlIGxvY2sgZm9yIHRoZSBkdXJhdGlvbiBvZgorICogdGhlIGFjY2Vz cyBpbnN0ZWFkLiBBbnkgY2FsbGVyIG5vdCBmb2xsb3dpbmcgdGhlc2UgcmVxdWlyZW1lbnRzIG11 c3QgdXNlCisgKiB1bnNhZmVfZm9sbG93X3BmbigpIGluc3RlYWQuCiAgKgogICogUmV0dXJuOiB6 ZXJvIGFuZCB0aGUgcGZuIGF0IEBwZm4gb24gc3VjY2VzcywgLXZlIG90aGVyd2lzZS4KICAqLwpA QCAtNDgxMSw2ICs0ODE2LDMxIEBAIGludCBmb2xsb3dfcGZuKHN0cnVjdCB2bV9hcmVhX3N0cnVj dCAqdm1hLCB1bnNpZ25lZCBsb25nIGFkZHJlc3MsCiB9CiBFWFBPUlRfU1lNQk9MKGZvbGxvd19w Zm4pOwogCisvKioKKyAqIHVuc2FmZV9mb2xsb3dfcGZuIC0gbG9vayB1cCBQRk4gYXQgYSB1c2Vy IHZpcnR1YWwgYWRkcmVzcworICogQHZtYTogbWVtb3J5IG1hcHBpbmcKKyAqIEBhZGRyZXNzOiB1 c2VyIHZpcnR1YWwgYWRkcmVzcworICogQHBmbjogbG9jYXRpb24gdG8gc3RvcmUgZm91bmQgUEZO CisgKgorICogT25seSBJTyBtYXBwaW5ncyBhbmQgcmF3IFBGTiBtYXBwaW5ncyBhcmUgYWxsb3dl ZC4KKyAqCisgKiBSZXR1cm5zIHplcm8gYW5kIHRoZSBwZm4gYXQgQHBmbiBvbiBzdWNjZXNzLCAt dmUgb3RoZXJ3aXNlLgorICovCitpbnQgdW5zYWZlX2ZvbGxvd19wZm4oc3RydWN0IHZtX2FyZWFf c3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgYWRkcmVzcywKKwl1bnNpZ25lZCBsb25nICpwZm4p Cit7CisjaWZkZWYgQ09ORklHX1NUUklDVF9GT0xMT1dfUEZOCisJcHJfaW5mbygidW5zYWZlIGZv bGxvd19wZm4gdXNhZ2UgcmVqZWN0ZWQsIHNlZSBDT05GSUdfU1RSSUNUX0ZPTExPV19QRk5cbiIp OworCXJldHVybiAtRUlOVkFMOworI2Vsc2UKKwlXQVJOX09OQ0UoMSwgInVuc2FmZSBmb2xsb3df cGZuIHVzYWdlXG4iKTsKKwlhZGRfdGFpbnQoVEFJTlRfVVNFUiwgTE9DS0RFUF9TVElMTF9PSyk7 CisKKwlyZXR1cm4gZm9sbG93X3Bmbih2bWEsIGFkZHJlc3MsIHBmbik7CisjZW5kaWYKK30KK0VY UE9SVF9TWU1CT0wodW5zYWZlX2ZvbGxvd19wZm4pOworCiAjaWZkZWYgQ09ORklHX0hBVkVfSU9S RU1BUF9QUk9UCiBpbnQgZm9sbG93X3BoeXMoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsCiAJ CXVuc2lnbmVkIGxvbmcgYWRkcmVzcywgdW5zaWduZWQgaW50IGZsYWdzLApkaWZmIC0tZ2l0IGEv bW0vbm9tbXUuYyBiL21tL25vbW11LmMKaW5kZXggNzVhMzI3MTQ5YWYxLi4zZGIyOTEwZjBkNjQg MTAwNjQ0Ci0tLSBhL21tL25vbW11LmMKKysrIGIvbW0vbm9tbXUuYwpAQCAtMTMyLDYgKzEzMiwy MyBAQCBpbnQgZm9sbG93X3BmbihzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQg bG9uZyBhZGRyZXNzLAogfQogRVhQT1JUX1NZTUJPTChmb2xsb3dfcGZuKTsKIAorLyoqCisgKiB1 bnNhZmVfZm9sbG93X3BmbiAtIGxvb2sgdXAgUEZOIGF0IGEgdXNlciB2aXJ0dWFsIGFkZHJlc3MK KyAqIEB2bWE6IG1lbW9yeSBtYXBwaW5nCisgKiBAYWRkcmVzczogdXNlciB2aXJ0dWFsIGFkZHJl c3MKKyAqIEBwZm46IGxvY2F0aW9uIHRvIHN0b3JlIGZvdW5kIFBGTgorICoKKyAqIE9ubHkgSU8g bWFwcGluZ3MgYW5kIHJhdyBQRk4gbWFwcGluZ3MgYXJlIGFsbG93ZWQuCisgKgorICogUmV0dXJu cyB6ZXJvIGFuZCB0aGUgcGZuIGF0IEBwZm4gb24gc3VjY2VzcywgLXZlIG90aGVyd2lzZS4KKyAq LworaW50IHVuc2FmZV9mb2xsb3dfcGZuKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNp Z25lZCBsb25nIGFkZHJlc3MsCisJdW5zaWduZWQgbG9uZyAqcGZuKQoreworCXJldHVybiBmb2xs b3dfcGZuKHZtYSwgYWRkcmVzcywgcGZuKTsKK30KK0VYUE9SVF9TWU1CT0wodW5zYWZlX2ZvbGxv d19wZm4pOworCiBMSVNUX0hFQUQodm1hcF9hcmVhX2xpc3QpOwogCiB2b2lkIHZmcmVlKGNvbnN0 IHZvaWQgKmFkZHIpCmRpZmYgLS1naXQgYS9zZWN1cml0eS9LY29uZmlnIGIvc2VjdXJpdHkvS2Nv bmZpZwppbmRleCA3NTYxZjZmOTlmMWQuLjQ4OTQ1NDAyZTEwMyAxMDA2NDQKLS0tIGEvc2VjdXJp dHkvS2NvbmZpZworKysgYi9zZWN1cml0eS9LY29uZmlnCkBAIC0yMzAsNiArMjMwLDE5IEBAIGNv bmZpZyBTVEFUSUNfVVNFUk1PREVIRUxQRVJfUEFUSAogCSAgSWYgeW91IHdpc2ggZm9yIGFsbCB1 c2VybW9kZSBoZWxwZXIgcHJvZ3JhbXMgdG8gYmUgZGlzYWJsZWQsCiAJICBzcGVjaWZ5IGFuIGVt cHR5IHN0cmluZyBoZXJlIChpLmUuICIiKS4KIAorY29uZmlnIFNUUklDVF9GT0xMT1dfUEZOCisJ Ym9vbCAiRGlzYWJsZSB1bnNhZmUgdXNlIG9mIGZvbGxvd19wZm4iCisJZGVwZW5kcyBvbiBNTVUK KwloZWxwCisJICBTb21lIGZ1bmN0aW9uYWxpdHkgaW4gdGhlIGtlcm5lbCBmb2xsb3dzIHVzZXJz cGFjZSBtYXBwaW5ncyB0byBpb21lbQorCSAgcmFuZ2VzIGluIGFuIHVuc2FmZSBtYXR0ZXIuIEV4 YW1wbGVzIGluY2x1ZGUgdjRsIHVzZXJwdHIgZm9yIHplcm8tY29weQorCSAgYnVmZmVycyBzaGFy aW5nLgorCisJICBJZiB0aGlzIG9wdGlvbiBpcyBzd2l0Y2hlZCBvbiwgc3VjaCBhY2Nlc3MgaXMg cmVqZWN0ZWQuIE9ubHkgZW5hYmxlCisJICB0aGlzIG9wdGlvbiB3aGVuIHlvdSBtdXN0IHJ1biB1 c2Vyc3BhY2Ugd2hpY2ggcmVxdWlyZXMgdGhpcy4KKworCSAgSWYgaW4gZG91YnQsIHNheSBZLgor CiBzb3VyY2UgInNlY3VyaXR5L3NlbGludXgvS2NvbmZpZyIKIHNvdXJjZSAic2VjdXJpdHkvc21h Y2svS2NvbmZpZyIKIHNvdXJjZSAic2VjdXJpdHkvdG9tb3lvL0tjb25maWciCi0tIAoyLjI4LjAK CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1h cm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5v cmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0t a2VybmVsCg== 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.6 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 46EF8C2D0A3 for ; Mon, 26 Oct 2020 10:58:50 +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 DCE6D2240C for ; Mon, 26 Oct 2020 10:58:49 +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="LeOH7Nu7" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org DCE6D2240C 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 2D4176E9AF; Mon, 26 Oct 2020 10:58:46 +0000 (UTC) Received: from mail-wm1-x341.google.com (mail-wm1-x341.google.com [IPv6:2a00:1450:4864:20::341]) by gabe.freedesktop.org (Postfix) with ESMTPS id 5E2386E0FB for ; Mon, 26 Oct 2020 10:58:38 +0000 (UTC) Received: by mail-wm1-x341.google.com with SMTP id a72so11153860wme.5 for ; Mon, 26 Oct 2020 03:58:38 -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=Jw8O4zHShCAt4bi/mdSwE8pqaQ/Ci7nnAmM3jj6tKas=; b=LeOH7Nu7nYyzs6z+/KfV+foE7RZUakypEXEfU/vXenF6NA90yn3buwHE0Uu6W+NU5m Hi0AM14GFSueByuFTd94ZbnLe28erHjzsMvKFy0Os9VwT8Ga/ABZUV2quSB96oh4ck2n HGBn3CIltcz0TR3fcsi6KP6WJJBm9e95NWE9o= 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=Jw8O4zHShCAt4bi/mdSwE8pqaQ/Ci7nnAmM3jj6tKas=; b=DXRz4986fW5/CIHDtarsw2tsRPdTYqeitZGuZZnuPGudcYvytb6CQcniaCAGY25pfX q7WlCkCi2mJ8U6g/3nFTc/krJ26LJsp0clHutgFHHUuu1j6INs0Gvhz4l96hwIk7ZZ+8 gGuzkgqjwgkIxqglRQacqmyaZSCHRmk6kZQ6Bokx6a+yZ2++EgPil/JmouXtkwdtMAXt G6OKCifrjvtcFqtI9ys9TJwgzbNeUhkf8vnB7hGO3rbwu3I7dhcpED/0ROtDfLipodTg MNFxQrGP0vPvNxvVQUHqGGs5DM6GFlDp8lgQcom7w7t5ULlohI/kSJ2UWH41P/5l4axR /KMQ== X-Gm-Message-State: AOAM530j7uJW5tTLWnaHcELu28Ru7CWeDbsWfomoqBRdItqfKPYJhzB4 1QUfDsxeBsDN7rOBNCk5nmcHWHesoV9KDvbs X-Google-Smtp-Source: ABdhPJwBkNEqxu0ChR0X2FBJPl4+XpnvlFPrjyvJkxjB1QLwg8t+SYJeWTboLEwPxYM+uDVWyRzgsA== X-Received: by 2002:a1c:6643:: with SMTP id a64mr15848860wmc.142.1603709916809; Mon, 26 Oct 2020 03:58:36 -0700 (PDT) Received: from phenom.ffwll.local ([2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa]) by smtp.gmail.com with ESMTPSA id w83sm21165156wmg.48.2020.10.26.03.58.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 26 Oct 2020 03:58:36 -0700 (PDT) From: Daniel Vetter To: DRI Development , LKML Subject: [PATCH v4 08/15] mm: Add unsafe_follow_pfn Date: Mon, 26 Oct 2020 11:58:11 +0100 Message-Id: <20201026105818.2585306-9-daniel.vetter@ffwll.ch> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20201026105818.2585306-1-daniel.vetter@ffwll.ch> References: <20201026105818.2585306-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 IGxpbnV4LW1lZGlhQHZnZXIua2VybmVsLm9yZwpDYzoga3ZtQHZnZXIua2VybmVsLm9yZwpTaWdu ZWQtb2ZmLWJ5OiBEYW5pZWwgVmV0dGVyIDxkYW5pZWwudmV0dGVyQGZmd2xsLmNoPgotLS0KIGlu Y2x1ZGUvbGludXgvbW0uaCB8ICAyICsrCiBtbS9tZW1vcnkuYyAgICAgICAgfCAzMiArKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrLQogbW0vbm9tbXUuYyAgICAgICAgIHwgMTcgKysrKysr KysrKysrKysrKysKIHNlY3VyaXR5L0tjb25maWcgICB8IDEzICsrKysrKysrKysrKysKIDQgZmls ZXMgY2hhbmdlZCwgNjMgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBh L2luY2x1ZGUvbGludXgvbW0uaCBiL2luY2x1ZGUvbGludXgvbW0uaAppbmRleCAyYTE2NjMxYzFm ZGEuLmVjOGM5MDkyOGZjOSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9tbS5oCisrKyBiL2lu Y2x1ZGUvbGludXgvbW0uaApAQCAtMTY1Myw2ICsxNjUzLDggQEAgaW50IGZvbGxvd19wdGVfcG1k KHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCB1bnNpZ25lZCBsb25nIGFkZHJlc3MsCiAJCSAgIHB0ZV90 ICoqcHRlcHAsIHBtZF90ICoqcG1kcHAsIHNwaW5sb2NrX3QgKipwdGxwKTsKIGludCBmb2xsb3df cGZuKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIGFkZHJlc3MsCiAJ dW5zaWduZWQgbG9uZyAqcGZuKTsKK2ludCB1bnNhZmVfZm9sbG93X3BmbihzdHJ1Y3Qgdm1fYXJl YV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZyBhZGRyZXNzLAorCQkgICAgICB1bnNpZ25lZCBs b25nICpwZm4pOwogaW50IGZvbGxvd19waHlzKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1 bnNpZ25lZCBsb25nIGFkZHJlc3MsCiAJCXVuc2lnbmVkIGludCBmbGFncywgdW5zaWduZWQgbG9u ZyAqcHJvdCwgcmVzb3VyY2Vfc2l6ZV90ICpwaHlzKTsKIGludCBnZW5lcmljX2FjY2Vzc19waHlz KHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIGFkZHIsCmRpZmYgLS1n aXQgYS9tbS9tZW1vcnkuYyBiL21tL21lbW9yeS5jCmluZGV4IDFiNDZlYWUzYjcwMy4uOWEyZWMw N2ZmMjBiIDEwMDY0NAotLS0gYS9tbS9tZW1vcnkuYworKysgYi9tbS9tZW1vcnkuYwpAQCAtNDc4 OCw3ICs0Nzg4LDEyIEBAIEVYUE9SVF9TWU1CT0woZm9sbG93X3B0ZV9wbWQpOwogICogQGFkZHJl c3M6IHVzZXIgdmlydHVhbCBhZGRyZXNzCiAgKiBAcGZuOiBsb2NhdGlvbiB0byBzdG9yZSBmb3Vu ZCBQRk4KICAqCi0gKiBPbmx5IElPIG1hcHBpbmdzIGFuZCByYXcgUEZOIG1hcHBpbmdzIGFyZSBh bGxvd2VkLgorICogT25seSBJTyBtYXBwaW5ncyBhbmQgcmF3IFBGTiBtYXBwaW5ncyBhcmUgYWxs b3dlZC4gTm90ZSB0aGF0IGNhbGxlcnMgbXVzdAorICogZW5zdXJlIGNvaGVyZW5jeSB3aXRoIHB0 ZSB1cGRhdGVzIGJ5IHVzaW5nIGEgJm1tdV9ub3RpZmllciB0byBmb2xsb3cgdXBkYXRlcy4KKyAq IElmIHRoaXMgaXMgbm90IGZlYXNpYmxlLCBvciB0aGUgYWNjZXNzIHRvIHRoZSBAcGZuIGlzIG9u bHkgdmVyeSBzaG9ydCB0ZXJtLAorICogdXNlIGZvbGxvd19wdGVfcG1kKCkgaW5zdGVhZCBhbmQg aG9sZCB0aGUgcGFnZXRhYmxlIGxvY2sgZm9yIHRoZSBkdXJhdGlvbiBvZgorICogdGhlIGFjY2Vz cyBpbnN0ZWFkLiBBbnkgY2FsbGVyIG5vdCBmb2xsb3dpbmcgdGhlc2UgcmVxdWlyZW1lbnRzIG11 c3QgdXNlCisgKiB1bnNhZmVfZm9sbG93X3BmbigpIGluc3RlYWQuCiAgKgogICogUmV0dXJuOiB6 ZXJvIGFuZCB0aGUgcGZuIGF0IEBwZm4gb24gc3VjY2VzcywgLXZlIG90aGVyd2lzZS4KICAqLwpA QCAtNDgxMSw2ICs0ODE2LDMxIEBAIGludCBmb2xsb3dfcGZuKHN0cnVjdCB2bV9hcmVhX3N0cnVj dCAqdm1hLCB1bnNpZ25lZCBsb25nIGFkZHJlc3MsCiB9CiBFWFBPUlRfU1lNQk9MKGZvbGxvd19w Zm4pOwogCisvKioKKyAqIHVuc2FmZV9mb2xsb3dfcGZuIC0gbG9vayB1cCBQRk4gYXQgYSB1c2Vy IHZpcnR1YWwgYWRkcmVzcworICogQHZtYTogbWVtb3J5IG1hcHBpbmcKKyAqIEBhZGRyZXNzOiB1 c2VyIHZpcnR1YWwgYWRkcmVzcworICogQHBmbjogbG9jYXRpb24gdG8gc3RvcmUgZm91bmQgUEZO CisgKgorICogT25seSBJTyBtYXBwaW5ncyBhbmQgcmF3IFBGTiBtYXBwaW5ncyBhcmUgYWxsb3dl ZC4KKyAqCisgKiBSZXR1cm5zIHplcm8gYW5kIHRoZSBwZm4gYXQgQHBmbiBvbiBzdWNjZXNzLCAt dmUgb3RoZXJ3aXNlLgorICovCitpbnQgdW5zYWZlX2ZvbGxvd19wZm4oc3RydWN0IHZtX2FyZWFf c3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgYWRkcmVzcywKKwl1bnNpZ25lZCBsb25nICpwZm4p Cit7CisjaWZkZWYgQ09ORklHX1NUUklDVF9GT0xMT1dfUEZOCisJcHJfaW5mbygidW5zYWZlIGZv bGxvd19wZm4gdXNhZ2UgcmVqZWN0ZWQsIHNlZSBDT05GSUdfU1RSSUNUX0ZPTExPV19QRk5cbiIp OworCXJldHVybiAtRUlOVkFMOworI2Vsc2UKKwlXQVJOX09OQ0UoMSwgInVuc2FmZSBmb2xsb3df cGZuIHVzYWdlXG4iKTsKKwlhZGRfdGFpbnQoVEFJTlRfVVNFUiwgTE9DS0RFUF9TVElMTF9PSyk7 CisKKwlyZXR1cm4gZm9sbG93X3Bmbih2bWEsIGFkZHJlc3MsIHBmbik7CisjZW5kaWYKK30KK0VY UE9SVF9TWU1CT0wodW5zYWZlX2ZvbGxvd19wZm4pOworCiAjaWZkZWYgQ09ORklHX0hBVkVfSU9S RU1BUF9QUk9UCiBpbnQgZm9sbG93X3BoeXMoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsCiAJ CXVuc2lnbmVkIGxvbmcgYWRkcmVzcywgdW5zaWduZWQgaW50IGZsYWdzLApkaWZmIC0tZ2l0IGEv bW0vbm9tbXUuYyBiL21tL25vbW11LmMKaW5kZXggNzVhMzI3MTQ5YWYxLi4zZGIyOTEwZjBkNjQg MTAwNjQ0Ci0tLSBhL21tL25vbW11LmMKKysrIGIvbW0vbm9tbXUuYwpAQCAtMTMyLDYgKzEzMiwy MyBAQCBpbnQgZm9sbG93X3BmbihzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQg bG9uZyBhZGRyZXNzLAogfQogRVhQT1JUX1NZTUJPTChmb2xsb3dfcGZuKTsKIAorLyoqCisgKiB1 bnNhZmVfZm9sbG93X3BmbiAtIGxvb2sgdXAgUEZOIGF0IGEgdXNlciB2aXJ0dWFsIGFkZHJlc3MK KyAqIEB2bWE6IG1lbW9yeSBtYXBwaW5nCisgKiBAYWRkcmVzczogdXNlciB2aXJ0dWFsIGFkZHJl c3MKKyAqIEBwZm46IGxvY2F0aW9uIHRvIHN0b3JlIGZvdW5kIFBGTgorICoKKyAqIE9ubHkgSU8g bWFwcGluZ3MgYW5kIHJhdyBQRk4gbWFwcGluZ3MgYXJlIGFsbG93ZWQuCisgKgorICogUmV0dXJu cyB6ZXJvIGFuZCB0aGUgcGZuIGF0IEBwZm4gb24gc3VjY2VzcywgLXZlIG90aGVyd2lzZS4KKyAq LworaW50IHVuc2FmZV9mb2xsb3dfcGZuKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNp Z25lZCBsb25nIGFkZHJlc3MsCisJdW5zaWduZWQgbG9uZyAqcGZuKQoreworCXJldHVybiBmb2xs b3dfcGZuKHZtYSwgYWRkcmVzcywgcGZuKTsKK30KK0VYUE9SVF9TWU1CT0wodW5zYWZlX2ZvbGxv d19wZm4pOworCiBMSVNUX0hFQUQodm1hcF9hcmVhX2xpc3QpOwogCiB2b2lkIHZmcmVlKGNvbnN0 IHZvaWQgKmFkZHIpCmRpZmYgLS1naXQgYS9zZWN1cml0eS9LY29uZmlnIGIvc2VjdXJpdHkvS2Nv bmZpZwppbmRleCA3NTYxZjZmOTlmMWQuLjQ4OTQ1NDAyZTEwMyAxMDA2NDQKLS0tIGEvc2VjdXJp dHkvS2NvbmZpZworKysgYi9zZWN1cml0eS9LY29uZmlnCkBAIC0yMzAsNiArMjMwLDE5IEBAIGNv bmZpZyBTVEFUSUNfVVNFUk1PREVIRUxQRVJfUEFUSAogCSAgSWYgeW91IHdpc2ggZm9yIGFsbCB1 c2VybW9kZSBoZWxwZXIgcHJvZ3JhbXMgdG8gYmUgZGlzYWJsZWQsCiAJICBzcGVjaWZ5IGFuIGVt cHR5IHN0cmluZyBoZXJlIChpLmUuICIiKS4KIAorY29uZmlnIFNUUklDVF9GT0xMT1dfUEZOCisJ Ym9vbCAiRGlzYWJsZSB1bnNhZmUgdXNlIG9mIGZvbGxvd19wZm4iCisJZGVwZW5kcyBvbiBNTVUK KwloZWxwCisJICBTb21lIGZ1bmN0aW9uYWxpdHkgaW4gdGhlIGtlcm5lbCBmb2xsb3dzIHVzZXJz cGFjZSBtYXBwaW5ncyB0byBpb21lbQorCSAgcmFuZ2VzIGluIGFuIHVuc2FmZSBtYXR0ZXIuIEV4 YW1wbGVzIGluY2x1ZGUgdjRsIHVzZXJwdHIgZm9yIHplcm8tY29weQorCSAgYnVmZmVycyBzaGFy aW5nLgorCisJICBJZiB0aGlzIG9wdGlvbiBpcyBzd2l0Y2hlZCBvbiwgc3VjaCBhY2Nlc3MgaXMg cmVqZWN0ZWQuIE9ubHkgZW5hYmxlCisJICB0aGlzIG9wdGlvbiB3aGVuIHlvdSBtdXN0IHJ1biB1 c2Vyc3BhY2Ugd2hpY2ggcmVxdWlyZXMgdGhpcy4KKworCSAgSWYgaW4gZG91YnQsIHNheSBZLgor CiBzb3VyY2UgInNlY3VyaXR5L3NlbGludXgvS2NvbmZpZyIKIHNvdXJjZSAic2VjdXJpdHkvc21h Y2svS2NvbmZpZyIKIHNvdXJjZSAic2VjdXJpdHkvdG9tb3lvL0tjb25maWciCi0tIAoyLjI4LjAK Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZl bCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xp c3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=