Received: by 2002:ac0:a582:0:0:0:0:0 with SMTP id m2-v6csp1374937imm; Tue, 2 Oct 2018 07:16:46 -0700 (PDT) X-Google-Smtp-Source: ACcGV621IFGxwd/JkuxosBBLihELRXH8lK1aJfGCa+ws7WxaHEqP3ivAPWiFQ3+La5r/MQCa3dIs X-Received: by 2002:aa7:82c3:: with SMTP id f3-v6mr16984930pfn.136.1538489806285; Tue, 02 Oct 2018 07:16:46 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1538489806; cv=none; d=google.com; s=arc-20160816; b=slctEUYHqfN9p6bkky6Cw59NiG88nwqRC1WHAtNDPKG/ID9vblxOdtnmrbMv8hZH2q ye4n+dr9K1SpiW3okOWJLvdR8rJx8ocCaPKO6DQGsrB/ZtiGtqu6Upbezx3T00E8NPXa y2Oht9jljsS5j0jS9I4fX7AaOgOYgRVQ3Tga0c7rmdYYkSMtywsA627Cyc56iQOqK/f+ iICa9DzSr/C8Sx5YNRzIyVDDombPSQmZs7XV8VBEQBfyZdzyHUvnwDhpcK36v/fcXvtt nqn/ER6AIyMPLv65Ekdz6GGbA1iAqgTzBvx3jfyQL4wuyYTlBk+64QfnDbPvv5eEP9Qt pBNQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from; bh=5z1W+ZjvfNK+oZ1J0CBU0A/oKZDfyGMffIHsNr9o/6I=; b=EMXtJgRk/gga9VAE/j4SlFqQ5MgkBygJCWEMuwhISazkjRwbDxukH732sQthyXp7vY e9OOnAXRcTO/JBv5Asg6etZgxyNC4TK6SZ5NjPhxXzwPebJTUH8EJDPswtE459X78O6o MfSe10tW4eLMpNarGijJgDdgdnEpOYUo17Obd/KF555IFwyitImwbWbu71279WlsbIg6 9Mu/Y2ZqZ7+D4En/kf3vQgxWKmuh+RgFPuat8VxFv79cfgR3A0tMKKF2zACqCu/OB7ks Nq3TQvR141Jg9nhfwrrke3tR10z16PGgaI+KcbsQ6vUrExMrqdnkhb056oBb5dFXdevT 7MvQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id r134-v6si301002pgr.252.2018.10.02.07.16.31; Tue, 02 Oct 2018 07:16:46 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726980AbeJBUJ4 (ORCPT + 99 others); Tue, 2 Oct 2018 16:09:56 -0400 Received: from mail.linuxfoundation.org ([140.211.169.12]:59846 "EHLO mail.linuxfoundation.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726304AbeJBUJ4 (ORCPT ); Tue, 2 Oct 2018 16:09:56 -0400 Received: from localhost (24-104-73-23-ip-static.hfc.comcastbusiness.net [24.104.73.23]) by mail.linuxfoundation.org (Postfix) with ESMTPSA id E3298B2F; Tue, 2 Oct 2018 13:26:34 +0000 (UTC) From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Zhen Lei , Joerg Roedel , Sasha Levin Subject: [PATCH 4.18 018/228] iommu/amd: make sure TLB to be flushed before IOVA freed Date: Tue, 2 Oct 2018 06:21:55 -0700 Message-Id: <20181002132500.298968294@linuxfoundation.org> X-Mailer: git-send-email 2.19.0 In-Reply-To: <20181002132459.032960735@linuxfoundation.org> References: <20181002132459.032960735@linuxfoundation.org> User-Agent: quilt/0.65 X-stable: review MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 4.18-stable review patch. If anyone has any objections, please let me know. ------------------ From: Zhen Lei [ Upstream commit 3c120143f584360a13614787e23ae2cdcb5e5ccd ] Although the mapping has already been removed in the page table, it maybe still exist in TLB. Suppose the freed IOVAs is reused by others before the flush operation completed, the new user can not correctly access to its meomory. Signed-off-by: Zhen Lei Fixes: b1516a14657a ('iommu/amd: Implement flush queue') Signed-off-by: Joerg Roedel Signed-off-by: Sasha Levin Signed-off-by: Greg Kroah-Hartman --- drivers/iommu/amd_iommu.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) --- a/drivers/iommu/amd_iommu.c +++ b/drivers/iommu/amd_iommu.c @@ -2405,9 +2405,9 @@ static void __unmap_single(struct dma_op } if (amd_iommu_unmap_flush) { - dma_ops_free_iova(dma_dom, dma_addr, pages); domain_flush_tlb(&dma_dom->domain); domain_flush_complete(&dma_dom->domain); + dma_ops_free_iova(dma_dom, dma_addr, pages); } else { pages = __roundup_pow_of_two(pages); queue_iova(&dma_dom->iovad, dma_addr >> PAGE_SHIFT, pages, 0);