Received: by 2002:ac0:950c:0:0:0:0:0 with SMTP id f12csp2277948imc; Tue, 12 Mar 2019 10:26:15 -0700 (PDT) X-Google-Smtp-Source: APXvYqxynFPOUBlJ/6M/lC30OQGNFnriHzgVJfQ7rCEYN0rQ6pIWs6N9aP27oKzehNogeIF2qS7Y X-Received: by 2002:a63:1053:: with SMTP id 19mr36222750pgq.55.1552411575646; Tue, 12 Mar 2019 10:26:15 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1552411575; cv=none; d=google.com; s=arc-20160816; b=ynP5AtLRytlp4FTlY+YzNwkJCCIj+RHMbU3cti3LcMUuIINfTJX0MMJvst/JbUqZsW kzzGHgq8k0wU6nCbMlndB3pTmtLD+NenFEIR/40gwWefh4Yr3asz1ob9j/AfYy+rZYJ8 6yqDC3C8z/rSA/A2JO8fA8nYYTdaGt+SSoHwrj3eO+BTZWN5V035u1gjPHhzfXXsM5nL CGuKRCGsbvi6OGWxaGO6flwaw5hAbYMhSz8SxRaCxkCfW11e7Oz8MsbNDY4TZIItHKiw NGrJo1B6yZSfBl+aI1dulO4A/RJcPqGXN/m+zBJ0ssrnEVc/O36lqwD7Eemz/mLEcNn+ tzIA== 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:dkim-signature; bh=nMmkTzfmV6my9BrFV8JrR9HHCbr7NTII5LeMzpOGNYc=; b=HBmwj0TpLwZMYmciyI6O80wirF2uj+omQZT8YbnfsHkz0t2CABfILOdOyoWcmWkr1W dwPXfVkZ5J9sX8PV5QmivVZ/Jn0P5h3mlKkj4sPwR3bRMC5srWjgsAy0TwHIFuvzXJ1q kcXxzLI7b4gtaSA85fk7McM1U0LoEOk+QuzvqrSYEyCK19nwetm+3kSC1w0D1b7A6LnY aA6q66AjMMMyNFh9aPm9CZ27NVt5WylhrRTstN1XFia4T65Y2ixxqso9YaXOrCX9ja7f MUHqM4FykICqXlyqckY4g9XKWvsCAeXrEd9HM7hHC9eAJsdvFihHQVCLExxEejLxRLsw nkCA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=GBniNiT6; 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 n18si7885638pgb.91.2019.03.12.10.25.59; Tue, 12 Mar 2019 10:26:15 -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; dkim=pass header.i=@kernel.org header.s=default header.b=GBniNiT6; 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 S1729349AbfCLRYb (ORCPT + 99 others); Tue, 12 Mar 2019 13:24:31 -0400 Received: from mail.kernel.org ([198.145.29.99]:34616 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728372AbfCLRRz (ORCPT ); Tue, 12 Mar 2019 13:17:55 -0400 Received: from localhost (unknown [104.133.8.98]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id B55052171F; Tue, 12 Mar 2019 17:17:54 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1552411074; bh=ovZldJAWqgLcR2TApPdw/OKleylFqJBJu19Oji1PEak=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=GBniNiT6Y15JYBEvYstQGWv+FOa1bbxv+KZPEjQKeMUj3KY99YKFImeLJXTjZEMdM 1yUZhWuBQ6sLLt7zxryngH+XabsNUDb6nF7KO3d9T2x/V5+sDBz+nrwEtBv4vYAqjt 8aWani5mF/+MmaBPK0o64N6x3AJvBV7nHit+CUWI= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Joerg Roedel , Jerry Snitselaar , Joerg Roedel , Sasha Levin Subject: [PATCH 4.9 39/96] iommu/amd: Unmap all mapped pages in error path of map_sg Date: Tue, 12 Mar 2019 10:09:57 -0700 Message-Id: <20190312171037.486369429@linuxfoundation.org> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190312171034.530434962@linuxfoundation.org> References: <20190312171034.530434962@linuxfoundation.org> User-Agent: quilt/0.65 X-stable: review X-Patchwork-Hint: ignore 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.9-stable review patch. If anyone has any objections, please let me know. ------------------ [ Upstream commit f1724c0883bb0ce93b8dcb94b53dcca3b75ac9a7 ] In the error path of map_sg there is an incorrect if condition for breaking out of the loop that searches the scatterlist for mapped pages to unmap. Instead of breaking out of the loop once all the pages that were mapped have been unmapped, it will break out of the loop after it has unmapped 1 page. Fix the condition, so it breaks out of the loop only after all the mapped pages have been unmapped. Fixes: 80187fd39dcb ("iommu/amd: Optimize map_sg and unmap_sg") Cc: Joerg Roedel Signed-off-by: Jerry Snitselaar Signed-off-by: Joerg Roedel Signed-off-by: Sasha Levin --- drivers/iommu/amd_iommu.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/iommu/amd_iommu.c b/drivers/iommu/amd_iommu.c index e413a4ef3c5c..b182839d36cb 100644 --- a/drivers/iommu/amd_iommu.c +++ b/drivers/iommu/amd_iommu.c @@ -2611,7 +2611,7 @@ static int map_sg(struct device *dev, struct scatterlist *sglist, bus_addr = address + s->dma_address + (j << PAGE_SHIFT); iommu_unmap_page(domain, bus_addr, PAGE_SIZE); - if (--mapped_pages) + if (--mapped_pages == 0) goto out_free_iova; } } -- 2.19.1