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 B9AD8C5DF9D for ; Mon, 26 Oct 2020 10:59:57 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 6F1E42225C for ; Mon, 26 Oct 2020 10:59:57 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=ffwll.ch header.i=@ffwll.ch header.b="Dj3JiGZj" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1772963AbgJZK74 (ORCPT ); Mon, 26 Oct 2020 06:59:56 -0400 Received: from mail-wr1-f66.google.com ([209.85.221.66]:37634 "EHLO mail-wr1-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1772763AbgJZK6i (ORCPT ); Mon, 26 Oct 2020 06:58:38 -0400 Received: by mail-wr1-f66.google.com with SMTP id h7so11903020wre.4 for ; Mon, 26 Oct 2020 03:58:36 -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=hPo/Bw6tNC6m8oopvfckb4iPuUPePa6aSZ/PC8jTJPc=; b=Dj3JiGZjov+rk5affXGvGP9402wtp2GUCI8icP85Tk14pyc7sO08mAvUqY9YP9TGeP A3lLoHuo5jVARaEvOzFub0c3j9eUvziHGf75XEJy+mxqS9G+F35hsNps/M+jOSCEbRrn iMP7/8q7yuqHTOslFET3CcuoYiLv8HRbrH3ec= 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=hPo/Bw6tNC6m8oopvfckb4iPuUPePa6aSZ/PC8jTJPc=; b=oGXUg7YGZ7Mo5TlTgvchagsvG82VmP5YnE11bc5LcSbN5qOHGqqqGUHk7T6Ouuvne2 kKeQw5T9iddb4ZmZFy9KQ1xd8XrNX3eSjYtEl6PUDIDUn+XlMGg+2Ung5PlWCatyvS+r NVyiP53TLdMjR8HwFdH6eSKYMk9gjGzyi/30iO3DeG7n3BYazuaQwoqIQBbWUn5Vopo7 WqPEGCStbeNyxufrEVrgn1GYYC2MmDjEHQfdGckuUq9tm1h4PdXa1rIgL3FCioC6qELi SulsyuzWGKlXR1mGBk6t1wBflmgFY0IdDD8WLIkGT9qoH2EgnEoD8RMU41yPiBXQ4zDd Ij+w== X-Gm-Message-State: AOAM530GIFMOGcpXzU3qz6iLYvM7mEUSk2KxlwaF5MBJhl8rYk90xQlD VSudyF7Mt+lUQ4pkaVxsNIvSog== X-Google-Smtp-Source: ABdhPJzNhlXxW3KYH0jGVof/+LSlV2+9EbEWYrtjvdi1lIJzYS2SPhGh/0KYLFV4Ur5EShPJwSKVLw== X-Received: by 2002:adf:a354:: with SMTP id d20mr18311675wrb.29.1603709915546; Mon, 26 Oct 2020 03:58:35 -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.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 26 Oct 2020 03:58:34 -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 , Dan Williams , Kees Cook , Benjamin Herrensmidt , Dave Airlie , Andrew Morton , John Hubbard , =?UTF-8?q?J=C3=A9r=C3=B4me=20Glisse?= , Jan Kara , Chris Wilson Subject: [PATCH v4 07/15] mm: Close race in generic_access_phys Date: Mon, 26 Oct 2020 11:58:10 +0100 Message-Id: <20201026105818.2585306-8-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. Fix this. Since ioremap might need to manipulate pagetables too we need to drop the pt lock and have a retry loop if we raced. While at it, also add kerneldoc and improve the comment for the vma_ops->access function. It's for accessing, not for moving the memory from iomem to system memory, as the old comment seemed to suggest. References: 28b2ee20c7cb ("access_process_vm device memory infrastructure") Signed-off-by: Daniel Vetter Cc: Jason Gunthorpe Cc: Dan Williams Cc: Kees Cook Cc: Benjamin Herrensmidt Cc: Dave Airlie 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: Chris Wilson Signed-off-by: Daniel Vetter -- v2: Fix inversion in the retry check (John). v4: While at it, use offset_in_page (Chris Wilson) --- include/linux/mm.h | 3 ++- mm/memory.c | 46 +++++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 45 insertions(+), 4 deletions(-) diff --git a/include/linux/mm.h b/include/linux/mm.h index acd60fbf1a5a..2a16631c1fda 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -566,7 +566,8 @@ struct vm_operations_struct { vm_fault_t (*pfn_mkwrite)(struct vm_fault *vmf); /* called by access_process_vm when get_user_pages() fails, typically - * for use by special VMAs that can switch between memory and hardware + * for use by special VMAs. See also generic_access_phys() for a generic + * implementation useful for any iomem mapping. */ int (*access)(struct vm_area_struct *vma, unsigned long addr, void *buf, int len, int write); diff --git a/mm/memory.c b/mm/memory.c index eeae590e526a..1b46eae3b703 100644 --- a/mm/memory.c +++ b/mm/memory.c @@ -4840,28 +4840,68 @@ int follow_phys(struct vm_area_struct *vma, return ret; } +/** + * generic_access_phys - generic implementation for iomem mmap access + * @vma: the vma to access + * @addr: userspace addres, not relative offset within @vma + * @buf: buffer to read/write + * @len: length of transfer + * @write: set to FOLL_WRITE when writing, otherwise reading + * + * This is a generic implementation for &vm_operations_struct.access for an + * iomem mapping. This callback is used by access_process_vm() when the @vma is + * not page based. + */ int generic_access_phys(struct vm_area_struct *vma, unsigned long addr, void *buf, int len, int write) { resource_size_t phys_addr; unsigned long prot = 0; void __iomem *maddr; - int offset = addr & (PAGE_SIZE-1); + pte_t *ptep, pte; + spinlock_t *ptl; + int offset = offset_in_page(addr); + int ret = -EINVAL; + + if (!(vma->vm_flags & (VM_IO | VM_PFNMAP))) + return -EINVAL; + +retry: + if (follow_pte(vma->vm_mm, addr, &ptep, &ptl)) + return -EINVAL; + pte = *ptep; + pte_unmap_unlock(ptep, ptl); - if (follow_phys(vma, addr, write, &prot, &phys_addr)) + prot = pgprot_val(pte_pgprot(pte)); + phys_addr = (resource_size_t)pte_pfn(pte) << PAGE_SHIFT; + + if ((write & FOLL_WRITE) && !pte_write(pte)) return -EINVAL; maddr = ioremap_prot(phys_addr, PAGE_ALIGN(len + offset), prot); if (!maddr) return -ENOMEM; + if (follow_pte(vma->vm_mm, addr, &ptep, &ptl)) + goto out_unmap; + + if (!pte_same(pte, *ptep)) { + pte_unmap_unlock(ptep, ptl); + iounmap(maddr); + + goto retry; + } + if (write) memcpy_toio(maddr + offset, buf, len); else memcpy_fromio(buf, maddr + offset, len); + ret = len; + pte_unmap_unlock(ptep, ptl); +out_unmap: iounmap(maddr); - return len; + return ret; } EXPORT_SYMBOL_GPL(generic_access_phys); #endif -- 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 57033C4363A for ; Mon, 26 Oct 2020 11:02:41 +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 E46DE207DE for ; Mon, 26 Oct 2020 11:02:40 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="l7GILWyB"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=ffwll.ch header.i=@ffwll.ch header.b="Dj3JiGZj" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org E46DE207DE 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=DfpMIO1TXypXyFSJzBjAD31liM/M4Op8JBXp7SoVNVY=; b=l7GILWyB06Z6ycCENWXJwx1Ab FgUEWHtI+NdYqQckMXAQVIHzyWdtf9ejqvfSZXvGtaBSgY4UV1d/v0ZDhM8RKCSuVcI1nSV6R43GK pf71Miu1IxCkq774HW/knfFxb8Gw/TFLZ3xMm5WMAu0+H0jWeiHe+FrjwJbomCgdG86GkM0WBAvwa MXOxUBNIzBZX9QXU5VU1/G9CjmBdPw/D2NIae840TYdf6II0cHzTgP8fylMzzIupIHQXxVPKFozEj PpiDLDqWvFWPSN/G4m+PEMFvegMF8KKAXoMlLxxONOk2Dls5L6FtAFE55Zyiy9VmCB9raDRunsuQj Iydstj2vA==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1kX0F3-0002rZ-4v; Mon, 26 Oct 2020 11:00:45 +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 1kX0Cy-0001yg-Ox for linux-arm-kernel@lists.infradead.org; Mon, 26 Oct 2020 10:58:47 +0000 Received: by mail-wr1-x442.google.com with SMTP id h5so11861927wrv.7 for ; Mon, 26 Oct 2020 03:58:36 -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=hPo/Bw6tNC6m8oopvfckb4iPuUPePa6aSZ/PC8jTJPc=; b=Dj3JiGZjov+rk5affXGvGP9402wtp2GUCI8icP85Tk14pyc7sO08mAvUqY9YP9TGeP A3lLoHuo5jVARaEvOzFub0c3j9eUvziHGf75XEJy+mxqS9G+F35hsNps/M+jOSCEbRrn iMP7/8q7yuqHTOslFET3CcuoYiLv8HRbrH3ec= 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=hPo/Bw6tNC6m8oopvfckb4iPuUPePa6aSZ/PC8jTJPc=; b=qBHutBiqkDN2KXFRdAQE84gjquxhYTKuOkN8EI+C58OnxZ9E8s10sjkuNBjAQCJSZj 91EIIuX1fInN8eOKd0oZhOueUXhORnEguFkgLLxZj4c1eO/iNeCz4PSyGM78DSiUSsS6 xD6vfw3ILteHGPjxDSCakDaBDO8RoV/AEgy1oqJM0FkyAUL/S/5ZPWB2G6TGx1fkY0wW rZuaFCTbaHusUrXDq/ObQ9p4YQwrIo0le1/FrUmZCw9OcEDQnRlkqPSUmiD5054ntHmT GV9BlIrsQbmcFBjWgPO3PkxYw5Q/1Q4VYqgpcfAGPR51ISgLdFfdoGjXgZ8TfhFKI/o5 A6VA== X-Gm-Message-State: AOAM531ggQieKABauH6hY6QT/013BUOhLT4nQxNbP54+0WMbAizXBswx cq5Oxa4NbKCHsST4podW26RCjg== X-Google-Smtp-Source: ABdhPJzNhlXxW3KYH0jGVof/+LSlV2+9EbEWYrtjvdi1lIJzYS2SPhGh/0KYLFV4Ur5EShPJwSKVLw== X-Received: by 2002:adf:a354:: with SMTP id d20mr18311675wrb.29.1603709915546; Mon, 26 Oct 2020 03:58:35 -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.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 26 Oct 2020 03:58:34 -0700 (PDT) From: Daniel Vetter To: DRI Development , LKML Subject: [PATCH v4 07/15] mm: Close race in generic_access_phys Date: Mon, 26 Oct 2020 11:58:10 +0100 Message-Id: <20201026105818.2585306-8-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_065836_964325_2CBF097F X-CRM114-Status: GOOD ( 22.69 ) 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 , Dave Airlie , Daniel Vetter , Chris Wilson , linux-mm@kvack.org, =?UTF-8?q?J=C3=A9r=C3=B4me=20Glisse?= , John Hubbard , Benjamin Herrensmidt , 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 IG5vd2FkYXlzLCBpbnZhbGlkYXRpbmcKICBwdGVzIHdpdGggdW5tYXBfbWFwcGluZ19yYW5nZSB3 aGVuIGJ1ZmZlcnMgZ2V0IG1vdmVkCgotIGNvbnRpZ3VvdXMgZG1hIGFsbG9jYXRpb25zIGhhdmUg bW92ZWQgZnJvbSBkZWRpY2F0ZWQgY2FydmV0b3V0cyB0bwogIGNtYSByZWdpb25zLiBUaGlzIG1l YW5zIGlmIHdlIG1pc3MgdGhlIHVubWFwIHRoZSBwZm4gbWlnaHQgY29udGFpbgogIHBhZ2VjYWNo ZSBvciBhbm9uIG1lbW9yeSAod2VsbCBhbnl0aGluZyBhbGxvY2F0ZWQgd2l0aCBHRlBfTU9WRUFC TEUpCgotIGV2ZW4gL2Rldi9tZW0gbm93IGludmFsaWRhdGVzIG1hcHBpbmdzIHdoZW4gdGhlIGtl cm5lbCByZXF1ZXN0cyB0aGF0CiAgaW9tZW0gcmVnaW9uIHdoZW4gQ09ORklHX0lPX1NUUklDVF9E RVZNRU0gaXMgc2V0LCBzZWUgMzIzNGFjNjY0YTg3CiAgKCIvZGV2L21lbTogUmV2b2tlIG1hcHBp bmdzIHdoZW4gYSBkcml2ZXIgY2xhaW1zIHRoZSByZWdpb24iKQoKQWNjZXNzaW5nIHBmbnMgb2J0 YWluZWQgZnJvbSBwdGVzIHdpdGhvdXQgaG9sZGluZyBhbGwgdGhlIGxvY2tzIGlzCnRoZXJlZm9y ZSBubyBsb25nZXIgYSBnb29kIGlkZWEuIEZpeCB0aGlzLgoKU2luY2UgaW9yZW1hcCBtaWdodCBu ZWVkIHRvIG1hbmlwdWxhdGUgcGFnZXRhYmxlcyB0b28gd2UgbmVlZCB0byBkcm9wCnRoZSBwdCBs b2NrIGFuZCBoYXZlIGEgcmV0cnkgbG9vcCBpZiB3ZSByYWNlZC4KCldoaWxlIGF0IGl0LCBhbHNv IGFkZCBrZXJuZWxkb2MgYW5kIGltcHJvdmUgdGhlIGNvbW1lbnQgZm9yIHRoZQp2bWFfb3BzLT5h Y2Nlc3MgZnVuY3Rpb24uIEl0J3MgZm9yIGFjY2Vzc2luZywgbm90IGZvciBtb3ZpbmcgdGhlCm1l bW9yeSBmcm9tIGlvbWVtIHRvIHN5c3RlbSBtZW1vcnksIGFzIHRoZSBvbGQgY29tbWVudCBzZWVt ZWQgdG8Kc3VnZ2VzdC4KClJlZmVyZW5jZXM6IDI4YjJlZTIwYzdjYiAoImFjY2Vzc19wcm9jZXNz X3ZtIGRldmljZSBtZW1vcnkgaW5mcmFzdHJ1Y3R1cmUiKQpTaWduZWQtb2ZmLWJ5OiBEYW5pZWwg VmV0dGVyIDxkYW5pZWwudmV0dGVyQGludGVsLmNvbT4KQ2M6IEphc29uIEd1bnRob3JwZSA8amdn QHppZXBlLmNhPgpDYzogRGFuIFdpbGxpYW1zIDxkYW4uai53aWxsaWFtc0BpbnRlbC5jb20+CkNj OiBLZWVzIENvb2sgPGtlZXNjb29rQGNocm9taXVtLm9yZz4KQ2M6IEJlbmphbWluIEhlcnJlbnNt aWR0IDxiZW5oQGtlcm5lbC5jcmFzaGluZy5vcmc+CkNjOiBEYXZlIEFpcmxpZSA8YWlybGllZEBs aW51eC5pZT4KQ2M6IEFuZHJldyBNb3J0b24gPGFrcG1AbGludXgtZm91bmRhdGlvbi5vcmc+CkNj OiBKb2huIEh1YmJhcmQgPGpodWJiYXJkQG52aWRpYS5jb20+CkNjOiBKw6lyw7RtZSBHbGlzc2Ug PGpnbGlzc2VAcmVkaGF0LmNvbT4KQ2M6IEphbiBLYXJhIDxqYWNrQHN1c2UuY3o+CkNjOiBEYW4g V2lsbGlhbXMgPGRhbi5qLndpbGxpYW1zQGludGVsLmNvbT4KQ2M6IGxpbnV4LW1tQGt2YWNrLm9y ZwpDYzogbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCkNjOiBsaW51eC1zYW1z dW5nLXNvY0B2Z2VyLmtlcm5lbC5vcmcKQ2M6IGxpbnV4LW1lZGlhQHZnZXIua2VybmVsLm9yZwpD YzogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+ClNpZ25lZC1vZmYtYnk6 IERhbmllbCBWZXR0ZXIgPGRhbmllbC52ZXR0ZXJAZmZ3bGwuY2g+Ci0tCnYyOiBGaXggaW52ZXJz aW9uIGluIHRoZSByZXRyeSBjaGVjayAoSm9obikuCgp2NDogV2hpbGUgYXQgaXQsIHVzZSBvZmZz ZXRfaW5fcGFnZSAoQ2hyaXMgV2lsc29uKQotLS0KIGluY2x1ZGUvbGludXgvbW0uaCB8ICAzICsr LQogbW0vbWVtb3J5LmMgICAgICAgIHwgNDYgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKy0tLQogMiBmaWxlcyBjaGFuZ2VkLCA0NSBpbnNlcnRpb25zKCspLCA0IGRl bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbW0uaCBiL2luY2x1ZGUvbGlu dXgvbW0uaAppbmRleCBhY2Q2MGZiZjFhNWEuLjJhMTY2MzFjMWZkYSAxMDA2NDQKLS0tIGEvaW5j bHVkZS9saW51eC9tbS5oCisrKyBiL2luY2x1ZGUvbGludXgvbW0uaApAQCAtNTY2LDcgKzU2Niw4 IEBAIHN0cnVjdCB2bV9vcGVyYXRpb25zX3N0cnVjdCB7CiAJdm1fZmF1bHRfdCAoKnBmbl9ta3dy aXRlKShzdHJ1Y3Qgdm1fZmF1bHQgKnZtZik7CiAKIAkvKiBjYWxsZWQgYnkgYWNjZXNzX3Byb2Nl c3Nfdm0gd2hlbiBnZXRfdXNlcl9wYWdlcygpIGZhaWxzLCB0eXBpY2FsbHkKLQkgKiBmb3IgdXNl IGJ5IHNwZWNpYWwgVk1BcyB0aGF0IGNhbiBzd2l0Y2ggYmV0d2VlbiBtZW1vcnkgYW5kIGhhcmR3 YXJlCisJICogZm9yIHVzZSBieSBzcGVjaWFsIFZNQXMuIFNlZSBhbHNvIGdlbmVyaWNfYWNjZXNz X3BoeXMoKSBmb3IgYSBnZW5lcmljCisJICogaW1wbGVtZW50YXRpb24gdXNlZnVsIGZvciBhbnkg aW9tZW0gbWFwcGluZy4KIAkgKi8KIAlpbnQgKCphY2Nlc3MpKHN0cnVjdCB2bV9hcmVhX3N0cnVj dCAqdm1hLCB1bnNpZ25lZCBsb25nIGFkZHIsCiAJCSAgICAgIHZvaWQgKmJ1ZiwgaW50IGxlbiwg aW50IHdyaXRlKTsKZGlmZiAtLWdpdCBhL21tL21lbW9yeS5jIGIvbW0vbWVtb3J5LmMKaW5kZXgg ZWVhZTU5MGU1MjZhLi4xYjQ2ZWFlM2I3MDMgMTAwNjQ0Ci0tLSBhL21tL21lbW9yeS5jCisrKyBi L21tL21lbW9yeS5jCkBAIC00ODQwLDI4ICs0ODQwLDY4IEBAIGludCBmb2xsb3dfcGh5cyhzdHJ1 Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwKIAlyZXR1cm4gcmV0OwogfQogCisvKioKKyAqIGdlbmVy aWNfYWNjZXNzX3BoeXMgLSBnZW5lcmljIGltcGxlbWVudGF0aW9uIGZvciBpb21lbSBtbWFwIGFj Y2VzcworICogQHZtYTogdGhlIHZtYSB0byBhY2Nlc3MKKyAqIEBhZGRyOiB1c2Vyc3BhY2UgYWRk cmVzLCBub3QgcmVsYXRpdmUgb2Zmc2V0IHdpdGhpbiBAdm1hCisgKiBAYnVmOiBidWZmZXIgdG8g cmVhZC93cml0ZQorICogQGxlbjogbGVuZ3RoIG9mIHRyYW5zZmVyCisgKiBAd3JpdGU6IHNldCB0 byBGT0xMX1dSSVRFIHdoZW4gd3JpdGluZywgb3RoZXJ3aXNlIHJlYWRpbmcKKyAqCisgKiBUaGlz IGlzIGEgZ2VuZXJpYyBpbXBsZW1lbnRhdGlvbiBmb3IgJnZtX29wZXJhdGlvbnNfc3RydWN0LmFj Y2VzcyBmb3IgYW4KKyAqIGlvbWVtIG1hcHBpbmcuIFRoaXMgY2FsbGJhY2sgaXMgdXNlZCBieSBh Y2Nlc3NfcHJvY2Vzc192bSgpIHdoZW4gdGhlIEB2bWEgaXMKKyAqIG5vdCBwYWdlIGJhc2VkLgor ICovCiBpbnQgZ2VuZXJpY19hY2Nlc3NfcGh5cyhzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwg dW5zaWduZWQgbG9uZyBhZGRyLAogCQkJdm9pZCAqYnVmLCBpbnQgbGVuLCBpbnQgd3JpdGUpCiB7 CiAJcmVzb3VyY2Vfc2l6ZV90IHBoeXNfYWRkcjsKIAl1bnNpZ25lZCBsb25nIHByb3QgPSAwOwog CXZvaWQgX19pb21lbSAqbWFkZHI7Ci0JaW50IG9mZnNldCA9IGFkZHIgJiAoUEFHRV9TSVpFLTEp OworCXB0ZV90ICpwdGVwLCBwdGU7CisJc3BpbmxvY2tfdCAqcHRsOworCWludCBvZmZzZXQgPSBv ZmZzZXRfaW5fcGFnZShhZGRyKTsKKwlpbnQgcmV0ID0gLUVJTlZBTDsKKworCWlmICghKHZtYS0+ dm1fZmxhZ3MgJiAoVk1fSU8gfCBWTV9QRk5NQVApKSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKK3Jl dHJ5OgorCWlmIChmb2xsb3dfcHRlKHZtYS0+dm1fbW0sIGFkZHIsICZwdGVwLCAmcHRsKSkKKwkJ cmV0dXJuIC1FSU5WQUw7CisJcHRlID0gKnB0ZXA7CisJcHRlX3VubWFwX3VubG9jayhwdGVwLCBw dGwpOwogCi0JaWYgKGZvbGxvd19waHlzKHZtYSwgYWRkciwgd3JpdGUsICZwcm90LCAmcGh5c19h ZGRyKSkKKwlwcm90ID0gcGdwcm90X3ZhbChwdGVfcGdwcm90KHB0ZSkpOworCXBoeXNfYWRkciA9 IChyZXNvdXJjZV9zaXplX3QpcHRlX3BmbihwdGUpIDw8IFBBR0VfU0hJRlQ7CisKKwlpZiAoKHdy aXRlICYgRk9MTF9XUklURSkgJiYgIXB0ZV93cml0ZShwdGUpKQogCQlyZXR1cm4gLUVJTlZBTDsK IAogCW1hZGRyID0gaW9yZW1hcF9wcm90KHBoeXNfYWRkciwgUEFHRV9BTElHTihsZW4gKyBvZmZz ZXQpLCBwcm90KTsKIAlpZiAoIW1hZGRyKQogCQlyZXR1cm4gLUVOT01FTTsKIAorCWlmIChmb2xs b3dfcHRlKHZtYS0+dm1fbW0sIGFkZHIsICZwdGVwLCAmcHRsKSkKKwkJZ290byBvdXRfdW5tYXA7 CisKKwlpZiAoIXB0ZV9zYW1lKHB0ZSwgKnB0ZXApKSB7CisJCXB0ZV91bm1hcF91bmxvY2socHRl cCwgcHRsKTsKKwkJaW91bm1hcChtYWRkcik7CisKKwkJZ290byByZXRyeTsKKwl9CisKIAlpZiAo d3JpdGUpCiAJCW1lbWNweV90b2lvKG1hZGRyICsgb2Zmc2V0LCBidWYsIGxlbik7CiAJZWxzZQog CQltZW1jcHlfZnJvbWlvKGJ1ZiwgbWFkZHIgKyBvZmZzZXQsIGxlbik7CisJcmV0ID0gbGVuOwor CXB0ZV91bm1hcF91bmxvY2socHRlcCwgcHRsKTsKK291dF91bm1hcDoKIAlpb3VubWFwKG1hZGRy KTsKIAotCXJldHVybiBsZW47CisJcmV0dXJuIHJldDsKIH0KIEVYUE9SVF9TWU1CT0xfR1BMKGdl bmVyaWNfYWNjZXNzX3BoeXMpOwogI2VuZGlmCi0tIAoyLjI4LjAKCgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcg bGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmlu ZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg== 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 A6DDBC64E7C for ; Mon, 26 Oct 2020 10:58:43 +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 3C6DF22404 for ; Mon, 26 Oct 2020 10:58:43 +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="Dj3JiGZj" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 3C6DF22404 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 615D46E864; Mon, 26 Oct 2020 10:58:39 +0000 (UTC) Received: from mail-wr1-x442.google.com (mail-wr1-x442.google.com [IPv6:2a00:1450:4864:20::442]) by gabe.freedesktop.org (Postfix) with ESMTPS id 1945D6E0FB for ; Mon, 26 Oct 2020 10:58:37 +0000 (UTC) Received: by mail-wr1-x442.google.com with SMTP id j7so11841492wrt.9 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=hPo/Bw6tNC6m8oopvfckb4iPuUPePa6aSZ/PC8jTJPc=; b=Dj3JiGZjov+rk5affXGvGP9402wtp2GUCI8icP85Tk14pyc7sO08mAvUqY9YP9TGeP A3lLoHuo5jVARaEvOzFub0c3j9eUvziHGf75XEJy+mxqS9G+F35hsNps/M+jOSCEbRrn iMP7/8q7yuqHTOslFET3CcuoYiLv8HRbrH3ec= 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=hPo/Bw6tNC6m8oopvfckb4iPuUPePa6aSZ/PC8jTJPc=; b=AJ15a+bNlFHPr0Pu7tP+SCX7VsazUH6imqAqbJJk8HntbkgmCPl0EMZwLvERBAqZpz z2I95HUtks1J+PU2KME0GktNf64reYGHbu7UJMdLTfsDi6FFMaPdYH3oI5aDeEGun9ys hL0YBp3vUZvtEuyidwfyAgJMIutSsZ3fUjivP1jww0HmGxJ6tW+YZoPlxt9GjDscBgbn HhC74jI9+mtZSjPfPApy67kkLvW+Dy1VRUMTj4YrsK7KTKzO04XAnkWvIW2lRpt7f5Oa f4ddlYV6QrKTjsH4CgSNimDcBLbdHbfHa5bQr5JEAGa27tApwaojRBY8m1H89TfYnZ2p Cq0A== X-Gm-Message-State: AOAM531aJjDVpuSOtHT3gEkrrVIovGS60WP8Lc57IpVk1jHbeU++YaSS 0zPMMA7mq805lkm5CXGO1lDBf179t60kr6gG X-Google-Smtp-Source: ABdhPJzNhlXxW3KYH0jGVof/+LSlV2+9EbEWYrtjvdi1lIJzYS2SPhGh/0KYLFV4Ur5EShPJwSKVLw== X-Received: by 2002:adf:a354:: with SMTP id d20mr18311675wrb.29.1603709915546; Mon, 26 Oct 2020 03:58:35 -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.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 26 Oct 2020 03:58:34 -0700 (PDT) From: Daniel Vetter To: DRI Development , LKML Subject: [PATCH v4 07/15] mm: Close race in generic_access_phys Date: Mon, 26 Oct 2020 11:58:10 +0100 Message-Id: <20201026105818.2585306-8-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 , Dave Airlie , Daniel Vetter , Chris Wilson , 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 IG5vd2FkYXlzLCBpbnZhbGlkYXRpbmcKICBwdGVzIHdpdGggdW5tYXBfbWFwcGluZ19yYW5nZSB3 aGVuIGJ1ZmZlcnMgZ2V0IG1vdmVkCgotIGNvbnRpZ3VvdXMgZG1hIGFsbG9jYXRpb25zIGhhdmUg bW92ZWQgZnJvbSBkZWRpY2F0ZWQgY2FydmV0b3V0cyB0bwogIGNtYSByZWdpb25zLiBUaGlzIG1l YW5zIGlmIHdlIG1pc3MgdGhlIHVubWFwIHRoZSBwZm4gbWlnaHQgY29udGFpbgogIHBhZ2VjYWNo ZSBvciBhbm9uIG1lbW9yeSAod2VsbCBhbnl0aGluZyBhbGxvY2F0ZWQgd2l0aCBHRlBfTU9WRUFC TEUpCgotIGV2ZW4gL2Rldi9tZW0gbm93IGludmFsaWRhdGVzIG1hcHBpbmdzIHdoZW4gdGhlIGtl cm5lbCByZXF1ZXN0cyB0aGF0CiAgaW9tZW0gcmVnaW9uIHdoZW4gQ09ORklHX0lPX1NUUklDVF9E RVZNRU0gaXMgc2V0LCBzZWUgMzIzNGFjNjY0YTg3CiAgKCIvZGV2L21lbTogUmV2b2tlIG1hcHBp bmdzIHdoZW4gYSBkcml2ZXIgY2xhaW1zIHRoZSByZWdpb24iKQoKQWNjZXNzaW5nIHBmbnMgb2J0 YWluZWQgZnJvbSBwdGVzIHdpdGhvdXQgaG9sZGluZyBhbGwgdGhlIGxvY2tzIGlzCnRoZXJlZm9y ZSBubyBsb25nZXIgYSBnb29kIGlkZWEuIEZpeCB0aGlzLgoKU2luY2UgaW9yZW1hcCBtaWdodCBu ZWVkIHRvIG1hbmlwdWxhdGUgcGFnZXRhYmxlcyB0b28gd2UgbmVlZCB0byBkcm9wCnRoZSBwdCBs b2NrIGFuZCBoYXZlIGEgcmV0cnkgbG9vcCBpZiB3ZSByYWNlZC4KCldoaWxlIGF0IGl0LCBhbHNv IGFkZCBrZXJuZWxkb2MgYW5kIGltcHJvdmUgdGhlIGNvbW1lbnQgZm9yIHRoZQp2bWFfb3BzLT5h Y2Nlc3MgZnVuY3Rpb24uIEl0J3MgZm9yIGFjY2Vzc2luZywgbm90IGZvciBtb3ZpbmcgdGhlCm1l bW9yeSBmcm9tIGlvbWVtIHRvIHN5c3RlbSBtZW1vcnksIGFzIHRoZSBvbGQgY29tbWVudCBzZWVt ZWQgdG8Kc3VnZ2VzdC4KClJlZmVyZW5jZXM6IDI4YjJlZTIwYzdjYiAoImFjY2Vzc19wcm9jZXNz X3ZtIGRldmljZSBtZW1vcnkgaW5mcmFzdHJ1Y3R1cmUiKQpTaWduZWQtb2ZmLWJ5OiBEYW5pZWwg VmV0dGVyIDxkYW5pZWwudmV0dGVyQGludGVsLmNvbT4KQ2M6IEphc29uIEd1bnRob3JwZSA8amdn QHppZXBlLmNhPgpDYzogRGFuIFdpbGxpYW1zIDxkYW4uai53aWxsaWFtc0BpbnRlbC5jb20+CkNj OiBLZWVzIENvb2sgPGtlZXNjb29rQGNocm9taXVtLm9yZz4KQ2M6IEJlbmphbWluIEhlcnJlbnNt aWR0IDxiZW5oQGtlcm5lbC5jcmFzaGluZy5vcmc+CkNjOiBEYXZlIEFpcmxpZSA8YWlybGllZEBs aW51eC5pZT4KQ2M6IEFuZHJldyBNb3J0b24gPGFrcG1AbGludXgtZm91bmRhdGlvbi5vcmc+CkNj OiBKb2huIEh1YmJhcmQgPGpodWJiYXJkQG52aWRpYS5jb20+CkNjOiBKw6lyw7RtZSBHbGlzc2Ug PGpnbGlzc2VAcmVkaGF0LmNvbT4KQ2M6IEphbiBLYXJhIDxqYWNrQHN1c2UuY3o+CkNjOiBEYW4g V2lsbGlhbXMgPGRhbi5qLndpbGxpYW1zQGludGVsLmNvbT4KQ2M6IGxpbnV4LW1tQGt2YWNrLm9y ZwpDYzogbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCkNjOiBsaW51eC1zYW1z dW5nLXNvY0B2Z2VyLmtlcm5lbC5vcmcKQ2M6IGxpbnV4LW1lZGlhQHZnZXIua2VybmVsLm9yZwpD YzogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+ClNpZ25lZC1vZmYtYnk6 IERhbmllbCBWZXR0ZXIgPGRhbmllbC52ZXR0ZXJAZmZ3bGwuY2g+Ci0tCnYyOiBGaXggaW52ZXJz aW9uIGluIHRoZSByZXRyeSBjaGVjayAoSm9obikuCgp2NDogV2hpbGUgYXQgaXQsIHVzZSBvZmZz ZXRfaW5fcGFnZSAoQ2hyaXMgV2lsc29uKQotLS0KIGluY2x1ZGUvbGludXgvbW0uaCB8ICAzICsr LQogbW0vbWVtb3J5LmMgICAgICAgIHwgNDYgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKy0tLQogMiBmaWxlcyBjaGFuZ2VkLCA0NSBpbnNlcnRpb25zKCspLCA0IGRl bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbW0uaCBiL2luY2x1ZGUvbGlu dXgvbW0uaAppbmRleCBhY2Q2MGZiZjFhNWEuLjJhMTY2MzFjMWZkYSAxMDA2NDQKLS0tIGEvaW5j bHVkZS9saW51eC9tbS5oCisrKyBiL2luY2x1ZGUvbGludXgvbW0uaApAQCAtNTY2LDcgKzU2Niw4 IEBAIHN0cnVjdCB2bV9vcGVyYXRpb25zX3N0cnVjdCB7CiAJdm1fZmF1bHRfdCAoKnBmbl9ta3dy aXRlKShzdHJ1Y3Qgdm1fZmF1bHQgKnZtZik7CiAKIAkvKiBjYWxsZWQgYnkgYWNjZXNzX3Byb2Nl c3Nfdm0gd2hlbiBnZXRfdXNlcl9wYWdlcygpIGZhaWxzLCB0eXBpY2FsbHkKLQkgKiBmb3IgdXNl IGJ5IHNwZWNpYWwgVk1BcyB0aGF0IGNhbiBzd2l0Y2ggYmV0d2VlbiBtZW1vcnkgYW5kIGhhcmR3 YXJlCisJICogZm9yIHVzZSBieSBzcGVjaWFsIFZNQXMuIFNlZSBhbHNvIGdlbmVyaWNfYWNjZXNz X3BoeXMoKSBmb3IgYSBnZW5lcmljCisJICogaW1wbGVtZW50YXRpb24gdXNlZnVsIGZvciBhbnkg aW9tZW0gbWFwcGluZy4KIAkgKi8KIAlpbnQgKCphY2Nlc3MpKHN0cnVjdCB2bV9hcmVhX3N0cnVj dCAqdm1hLCB1bnNpZ25lZCBsb25nIGFkZHIsCiAJCSAgICAgIHZvaWQgKmJ1ZiwgaW50IGxlbiwg aW50IHdyaXRlKTsKZGlmZiAtLWdpdCBhL21tL21lbW9yeS5jIGIvbW0vbWVtb3J5LmMKaW5kZXgg ZWVhZTU5MGU1MjZhLi4xYjQ2ZWFlM2I3MDMgMTAwNjQ0Ci0tLSBhL21tL21lbW9yeS5jCisrKyBi L21tL21lbW9yeS5jCkBAIC00ODQwLDI4ICs0ODQwLDY4IEBAIGludCBmb2xsb3dfcGh5cyhzdHJ1 Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwKIAlyZXR1cm4gcmV0OwogfQogCisvKioKKyAqIGdlbmVy aWNfYWNjZXNzX3BoeXMgLSBnZW5lcmljIGltcGxlbWVudGF0aW9uIGZvciBpb21lbSBtbWFwIGFj Y2VzcworICogQHZtYTogdGhlIHZtYSB0byBhY2Nlc3MKKyAqIEBhZGRyOiB1c2Vyc3BhY2UgYWRk cmVzLCBub3QgcmVsYXRpdmUgb2Zmc2V0IHdpdGhpbiBAdm1hCisgKiBAYnVmOiBidWZmZXIgdG8g cmVhZC93cml0ZQorICogQGxlbjogbGVuZ3RoIG9mIHRyYW5zZmVyCisgKiBAd3JpdGU6IHNldCB0 byBGT0xMX1dSSVRFIHdoZW4gd3JpdGluZywgb3RoZXJ3aXNlIHJlYWRpbmcKKyAqCisgKiBUaGlz IGlzIGEgZ2VuZXJpYyBpbXBsZW1lbnRhdGlvbiBmb3IgJnZtX29wZXJhdGlvbnNfc3RydWN0LmFj Y2VzcyBmb3IgYW4KKyAqIGlvbWVtIG1hcHBpbmcuIFRoaXMgY2FsbGJhY2sgaXMgdXNlZCBieSBh Y2Nlc3NfcHJvY2Vzc192bSgpIHdoZW4gdGhlIEB2bWEgaXMKKyAqIG5vdCBwYWdlIGJhc2VkLgor ICovCiBpbnQgZ2VuZXJpY19hY2Nlc3NfcGh5cyhzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwg dW5zaWduZWQgbG9uZyBhZGRyLAogCQkJdm9pZCAqYnVmLCBpbnQgbGVuLCBpbnQgd3JpdGUpCiB7 CiAJcmVzb3VyY2Vfc2l6ZV90IHBoeXNfYWRkcjsKIAl1bnNpZ25lZCBsb25nIHByb3QgPSAwOwog CXZvaWQgX19pb21lbSAqbWFkZHI7Ci0JaW50IG9mZnNldCA9IGFkZHIgJiAoUEFHRV9TSVpFLTEp OworCXB0ZV90ICpwdGVwLCBwdGU7CisJc3BpbmxvY2tfdCAqcHRsOworCWludCBvZmZzZXQgPSBv ZmZzZXRfaW5fcGFnZShhZGRyKTsKKwlpbnQgcmV0ID0gLUVJTlZBTDsKKworCWlmICghKHZtYS0+ dm1fZmxhZ3MgJiAoVk1fSU8gfCBWTV9QRk5NQVApKSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKK3Jl dHJ5OgorCWlmIChmb2xsb3dfcHRlKHZtYS0+dm1fbW0sIGFkZHIsICZwdGVwLCAmcHRsKSkKKwkJ cmV0dXJuIC1FSU5WQUw7CisJcHRlID0gKnB0ZXA7CisJcHRlX3VubWFwX3VubG9jayhwdGVwLCBw dGwpOwogCi0JaWYgKGZvbGxvd19waHlzKHZtYSwgYWRkciwgd3JpdGUsICZwcm90LCAmcGh5c19h ZGRyKSkKKwlwcm90ID0gcGdwcm90X3ZhbChwdGVfcGdwcm90KHB0ZSkpOworCXBoeXNfYWRkciA9 IChyZXNvdXJjZV9zaXplX3QpcHRlX3BmbihwdGUpIDw8IFBBR0VfU0hJRlQ7CisKKwlpZiAoKHdy aXRlICYgRk9MTF9XUklURSkgJiYgIXB0ZV93cml0ZShwdGUpKQogCQlyZXR1cm4gLUVJTlZBTDsK IAogCW1hZGRyID0gaW9yZW1hcF9wcm90KHBoeXNfYWRkciwgUEFHRV9BTElHTihsZW4gKyBvZmZz ZXQpLCBwcm90KTsKIAlpZiAoIW1hZGRyKQogCQlyZXR1cm4gLUVOT01FTTsKIAorCWlmIChmb2xs b3dfcHRlKHZtYS0+dm1fbW0sIGFkZHIsICZwdGVwLCAmcHRsKSkKKwkJZ290byBvdXRfdW5tYXA7 CisKKwlpZiAoIXB0ZV9zYW1lKHB0ZSwgKnB0ZXApKSB7CisJCXB0ZV91bm1hcF91bmxvY2socHRl cCwgcHRsKTsKKwkJaW91bm1hcChtYWRkcik7CisKKwkJZ290byByZXRyeTsKKwl9CisKIAlpZiAo d3JpdGUpCiAJCW1lbWNweV90b2lvKG1hZGRyICsgb2Zmc2V0LCBidWYsIGxlbik7CiAJZWxzZQog CQltZW1jcHlfZnJvbWlvKGJ1ZiwgbWFkZHIgKyBvZmZzZXQsIGxlbik7CisJcmV0ID0gbGVuOwor CXB0ZV91bm1hcF91bmxvY2socHRlcCwgcHRsKTsKK291dF91bm1hcDoKIAlpb3VubWFwKG1hZGRy KTsKIAotCXJldHVybiBsZW47CisJcmV0dXJuIHJldDsKIH0KIEVYUE9SVF9TWU1CT0xfR1BMKGdl bmVyaWNfYWNjZXNzX3BoeXMpOwogI2VuZGlmCi0tIAoyLjI4LjAKCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJp LWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=