From patchwork Tue Feb 21 13:16:38 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Marek Szyprowski X-Patchwork-Id: 94274 Delivered-To: patch@linaro.org Received: by 10.140.20.99 with SMTP id 90csp437054qgi; Tue, 21 Feb 2017 05:17:01 -0800 (PST) X-Received: by 10.99.0.196 with SMTP id 187mr34780139pga.139.1487683021542; Tue, 21 Feb 2017 05:17:01 -0800 (PST) Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id r7si21927751ple.302.2017.02.21.05.17.01; Tue, 21 Feb 2017 05:17:01 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of stable-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 stable-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=stable-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752568AbdBUNRA (ORCPT + 4 others); Tue, 21 Feb 2017 08:17:00 -0500 Received: from mailout2.w1.samsung.com ([210.118.77.12]:65174 "EHLO mailout2.w1.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752100AbdBUNQ7 (ORCPT ); Tue, 21 Feb 2017 08:16:59 -0500 Received: from eucas1p2.samsung.com (unknown [182.198.249.207]) by mailout2.w1.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTP id <0OLQ008A57K8E140@mailout2.w1.samsung.com> for stable@vger.kernel.org; Tue, 21 Feb 2017 13:16:57 +0000 (GMT) Received: from eusmges4.samsung.com (unknown [203.254.199.244]) by eucas1p2.samsung.com (KnoxPortal) with ESMTP id 20170221131656eucas1p264257f021fc48033c7dd75d2883af250~lT9IzO5pK1742817428eucas1p2Z; Tue, 21 Feb 2017 13:16:56 +0000 (GMT) Received: from eucas1p1.samsung.com ( [182.198.249.206]) by eusmges4.samsung.com (EUCPMTA) with SMTP id D3.02.28517.7CD3CA85; Tue, 21 Feb 2017 13:16:55 +0000 (GMT) Received: from eusmgms1.samsung.com (unknown [182.198.249.179]) by eucas1p2.samsung.com (KnoxPortal) with ESMTP id 20170221131655eucas1p2f2ca6e3c819aeae227c5e5c5f2bc7d3f~lT9IEv2xI3011430114eucas1p2z; Tue, 21 Feb 2017 13:16:55 +0000 (GMT) X-AuditID: cbfec7f4-f79716d000006f65-5b-58ac3dc73d39 Received: from eusync3.samsung.com ( [203.254.199.213]) by eusmgms1.samsung.com (EUCPMTA) with SMTP id 02.4B.06687.C1E3CA85; Tue, 21 Feb 2017 13:18:20 +0000 (GMT) Received: from AMDC2765.digital.local ([106.116.147.25]) by eusync3.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTPA id <0OLQ00F1J7K3DM70@eusync3.samsung.com>; Tue, 21 Feb 2017 13:16:55 +0000 (GMT) From: Marek Szyprowski To: linux-arm-kernel@lists.infradead.org Cc: Marek Szyprowski , Russell King , Bartlomiej Zolnierkiewicz , stable@vger.kernel.org Subject: [PATCH] ARM: dma-mapping: Fix dma_get_sgtable() for regions without struct page Date: Tue, 21 Feb 2017 14:16:38 +0100 Message-id: <1487682998-2564-1-git-send-email-m.szyprowski@samsung.com> X-Mailer: git-send-email 1.9.1 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFlrDIsWRmVeSWpSXmKPExsWy7djPc7rHbddEGLR9MLXYOGM9q8Wmx9dY LdYeuctusfnDSzaLBRsfMTqwerQ097B5bF5S79G3ZRWjx+dNcgEsUVw2Kak5mWWpRfp2CVwZ /6ZPZCx4w1Gx4OVupgbGzexdjJwcEgImEg/WdLBC2GISF+6tZ+ti5OIQEljKKLHn/l0WkISQ wGdGibtL3GAa7r1bxQJRtIxRovPMdVYIp4FJ4taWSWwgVWwChhJdb7vAbBEBDYkpXY/ZQYqY BdYySvxZeQ1srLBAlMSv5nVgNouAqkT7m3lgd/AKuEtMX3qFBWKdnMTJY5PBNkgIHGCTeLbg L2MXIweQIyux6QAzRI2LxItPj6FsYYlXx7dA/SYj0dlxkAnC7meUaGrVhrBnMEqce8sLYVtL HD5+EWwvswCfxKRt05khxvNKdLQJQZR4SNx/cQIaRI4Sja872SChEiuxZdFcxgmM0gsYGVYx iqSWFuempxab6BUn5haX5qXrJefnbmIExuHpf8e/7GBcfMzqEKMAB6MSD++OH6sihFgTy4or cw8xSnAwK4nwvjVaEyHEm5JYWZValB9fVJqTWnyIUZqDRUmcd8+CK+FCAumJJanZqakFqUUw WSYOTqkGxuVfN0noyWecnH+Ap3vfntOpzPk5KW2vuK/PD54V+fnkZNkLMyrnhWo/f7eRZ8K9 Ir2SRKnKixEWflXtLw1rDU9H8tipJpfZf9p5MT10cdO9lV6/09/G7i+KfGDqIaWnezRS5bFV jkm8E//BJ3ora7/Fz+ldFsu0gP/hLxbJqSdm7/ByPynLr8RSnJFoqMVcVJwIACO3KEe/AgAA X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrELMWRmVeSWpSXmKPExsVy+t/xq7oydmsiDK6uYrLYOGM9q8Wmx9dY LdYeuctusfnDSzaLBRsfMTqwerQ097B5bF5S79G3ZRWjx+dNcgEsUW42GamJKalFCql5yfkp mXnptkqhIW66FkoKeYm5qbZKEbq+IUFKCmWJOaVAnpEBGnBwDnAPVtK3S3DL+Dd9ImPBG46K BS93MzUwbmbvYuTkkBAwkbj3bhULhC0mceHeerYuRi4OIYEljBIfp59ggnCamCRu3J4DVsUm YCjR9baLDcQWEdCQmNL1mB2kiFlgLaNEy8PrzCAJYYEoiV/N68AaWARUJdrfzGMFsXkF3CWm L70CtU5O4uSxyawTGLkXMDKsYhRJLS3OTc8tNtQrTswtLs1L10vOz93ECAy/bcd+bt7BeGlj 8CFGAQ5GJR7eHT9WRQixJpYVV+YeYpTgYFYS4X1rtCZCiDclsbIqtSg/vqg0J7X4EKMp0PKJ zFKiyfnA2MgriTc0MTS3NDQytrAwNzJSEuct+XAlXEggPbEkNTs1tSC1CKaPiYNTqoEx+5jb QaPd+x63Hlh3Kv/LBFk9i51vPrKdylgaVrJa8YGe+Wk5aZk7h+TLVs0vLmZ+zZHS+/ZKb7JN gMCBbs/d3jMXLlfyqBRmOWGxM353VRLD6nqjiidPLT64/Fscoc8ok2I4V+FU986DTlsvft+0 wpB5olzkKq/Zx+yO+jYnGMge235x9XJ9JZbijERDLeai4kQA773OwlUCAAA= X-MTR: 20000000000000000@CPGS X-CMS-MailID: 20170221131655eucas1p2f2ca6e3c819aeae227c5e5c5f2bc7d3f X-Msg-Generator: CA X-Sender-IP: 182.198.249.179 X-Local-Sender: =?utf-8?q?Marek_Szyprowski=1BSRPOL-Kernel_=28TP=29=1B?= =?utf-8?b?7IK87ISx7KCE7J6QG1NlbmlvciBTb2Z0d2FyZSBFbmdpbmVlcg==?= X-Global-Sender: =?utf-8?q?Marek_Szyprowski=1BSRPOL-Kernel_=28TP=29=1BSam?= =?utf-8?q?sung_Electronics=1BSenior_Software_Engineer?= X-Sender-Code: =?utf-8?q?C10=1BEHQ=1BC10CD02CD027392?= CMS-TYPE: 201P X-HopCount: 7 X-CMS-RootMailID: 20170221131655eucas1p2f2ca6e3c819aeae227c5e5c5f2bc7d3f X-RootMTR: 20170221131655eucas1p2f2ca6e3c819aeae227c5e5c5f2bc7d3f References: Sender: stable-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: stable@vger.kernel.org Some DMA regions, for example those created by dma_declare_coherent_memory, might not be possible to be represented by struct page pointers. Getting scatterlist for the buffer allocated from such region is not possible. This patch adds a simple check in arm_dma_get_sgtable() function if the exported struct page pointer is valid. Fixes: dc2832e1e7db3 ("ARM: dma-mapping: add support for dma_get_sgtable()") Signed-off-by: Marek Szyprowski --- arch/arm/mm/dma-mapping.c | 4 ++++ 1 file changed, 4 insertions(+) -- 1.9.1 Signed-off-by: Russell King diff --git a/arch/arm/mm/dma-mapping.c b/arch/arm/mm/dma-mapping.c index fc4a4eaa9934..4b2cf82fbca6 100644 --- a/arch/arm/mm/dma-mapping.c +++ b/arch/arm/mm/dma-mapping.c @@ -942,6 +942,10 @@ int arm_dma_get_sgtable(struct device *dev, struct sg_table *sgt, struct page *page = pfn_to_page(dma_to_pfn(dev, handle)); int ret; + /* Check if DMA handle has been properly translated to page. */ + if (pfn_to_dma(dev, page_to_pfn(page)) != handle) + return -ENXIO; + ret = sg_alloc_table(sgt, 1, GFP_KERNEL); if (unlikely(ret)) return ret;