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 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id EFBF6C7EE2A for ; Wed, 25 Jun 2025 13:19:41 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 9236F8D000C; Wed, 25 Jun 2025 09:19:41 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 8D5168D0001; Wed, 25 Jun 2025 09:19:41 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 7747E8D000C; Wed, 25 Jun 2025 09:19:41 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id 672D98D0001 for ; Wed, 25 Jun 2025 09:19:41 -0400 (EDT) Received: from smtpin22.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id 203378037F for ; Wed, 25 Jun 2025 13:19:41 +0000 (UTC) X-FDA: 83593980162.22.B14D2B3 Received: from nyc.source.kernel.org (nyc.source.kernel.org [147.75.193.91]) by imf10.hostedemail.com (Postfix) with ESMTP id 79CFCC0019 for ; Wed, 25 Jun 2025 13:19:39 +0000 (UTC) Authentication-Results: imf10.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=JmvSEIY+; spf=pass (imf10.hostedemail.com: domain of leon@kernel.org designates 147.75.193.91 as permitted sender) smtp.mailfrom=leon@kernel.org; dmarc=pass (policy=quarantine) header.from=kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1750857579; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=yT6++2TGmOpIUKHGdyhEudX+l9ewF2H6ydYa1C4h+jI=; b=S8kP59E8p1niGVMhKul9AMcz9YGWzrHOOyw3LtDcGzf0FqNtHdn20ICetxzCMxWZh3iaFk M7OFM/tJxY/8jNSd8wwGg/7ngbTan64Z2fwp8OmEq1CmC1XDYT3WCa8V5Ja65/WRZ4IEfL 5h+BhRhnKYot+NYxPile3Y2bjGd/AYo= ARC-Authentication-Results: i=1; imf10.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=JmvSEIY+; spf=pass (imf10.hostedemail.com: domain of leon@kernel.org designates 147.75.193.91 as permitted sender) smtp.mailfrom=leon@kernel.org; dmarc=pass (policy=quarantine) header.from=kernel.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1750857579; a=rsa-sha256; cv=none; b=L9ZGewKFaNgrLCSjoQGvTpmRBq+YfQ19j0IiMhoHEv7rBpDoqgFVm1njr8CYepA7ckvasA KSvmndHFuwuqZhrdHOJrI+WfF9Sv57ZHaBsOOOwX0/quaNIa/bn6QODTcN7P45If+eYZdN aQ4aNFzm1iGE6N6OW7iZM+/tO5HuEzk= Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by nyc.source.kernel.org (Postfix) with ESMTP id BB698A5261A; Wed, 25 Jun 2025 13:19:38 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id C193CC4CEEA; Wed, 25 Jun 2025 13:19:37 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1750857578; bh=pv7jnMJTkJVOWVb/twnbCICvjtCn/HJgKS2K42rWa78=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=JmvSEIY+7ban/csViJFvTitjdhG8lqD1RrM9Bs5vfSX9RUXW8VcItqnFKYK2IHLEp Oj2lQpsBja99AvsQZszqc5HRTCd6sTT2RtsSsG6njLkXmU7qMY7Vv1lVgBzXyQPbYb mwcqp68DZHG0wv/LITtswgnUm5CJOJrlmJA71Izf1q+m6fso9FWpqVFZFJs+E3/PJL bafB00mS656RTCoymMmH42juG8s5ossf9tDfV3oq8Q1fChuX8RreRxr/WBdOxO1x0w XEs/Im4vy1Epw96JlCjF5ya6mj/Q07IUEwpzgcRddZa4ZUr/RT6TslLGklPWGDJsVe KAxqIq8HM4v0Q== From: Leon Romanovsky To: Marek Szyprowski Cc: Leon Romanovsky , Christoph Hellwig , Jonathan Corbet , Madhavan Srinivasan , Michael Ellerman , Nicholas Piggin , Christophe Leroy , Robin Murphy , Joerg Roedel , Will Deacon , "Michael S. Tsirkin" , Jason Wang , Xuan Zhuo , =?UTF-8?q?Eugenio=20P=C3=A9rez?= , Alexander Potapenko , Marco Elver , Dmitry Vyukov , Masami Hiramatsu , Mathieu Desnoyers , =?UTF-8?q?J=C3=A9r=C3=B4me=20Glisse?= , Andrew Morton , linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, iommu@lists.linux.dev, virtualization@lists.linux.dev, kasan-dev@googlegroups.com, linux-trace-kernel@vger.kernel.org, linux-mm@kvack.org Subject: [PATCH 6/8] dma-mapping: fail early if physical address is mapped through platform callback Date: Wed, 25 Jun 2025 16:19:03 +0300 Message-ID: <5fc1f0ca52a85834b3e978c5d6a3171d7dd3c194.1750854543.git.leon@kernel.org> X-Mailer: git-send-email 2.49.0 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Rspamd-Queue-Id: 79CFCC0019 X-Stat-Signature: 1r8sm8g4m158foknjkstja19y5q69155 X-Rspamd-Server: rspam09 X-Rspam-User: X-HE-Tag: 1750857579-252940 X-HE-Meta: U2FsdGVkX1/VDokPXxfCaeyFMRkJu3jeJfRUeUo0OgbvE7Sz5s9/HO4ZvYs9BXcE+fJ5C7SlxaH2wA7ARX+wVIWueuCSxGRfeO6fzguNrUSXfumU0iKISMR56knfpjsHDz9z32gn4pxC4tH09rbotNIGYn6HqoSG+uC69C38FT3WNdFaOjHmNWE1tiY7sQfzqbj5WgYQGqUVCfnYYw8jcn/bHjaolISVYR7ry6eQtoFbbLhDL/cgI+NFGdWI6owN0L23A8oq9r1zhCStZ8/Zksco7R4QUNgewfjwhXnR85+Ff+zEFxTikwxuWaTWF+sewrG082UoVMCLN5qzRMgr+ZdwpvSFcdL8U11T3gD7uP6fyH+5tvuDMI/R7JhCB09rwpnrQcTj44plUh4dlYHO6eNsAx1M0YG+FFCmn/4JiOVV1aez2KvaPqbIduV7Ud4cDcupyN70M3hRqObAnlTFeowsFDzMcK5NLOF/pbAc8wYW/nvm59wv4b9i9GD3yUmfUcBkyCzta/DputsR79lXDA2oB2vvm6pKFDD1Y6eIDnhVFUZK0tEu2aBBog3oiA7sdxl7Klm3zs6xxsmeH17zym2UzbP03/CU3QaUrErLZ5v4Wz98NOMihNfMfox9m3zJGz8iKbWhELcpTG8v63AOXx5FmG2At/vYHMRrDgl02uhIGKbGlwGCzJ+FnjC7PtImvZoHffrNfMqMu57WWrBMTASIVqEtTsx2p/xITMTia4yivBjvzWBSZvdTPji8+evPUCEykKUG1+KbW2YxmsGTZTVLAiusTGCoFUI3M3JMT1l58WoYVUHpJ6hT5FlIeRBtDM7VribLJLvvDhR0JidXSxRu1KCsG+UoTpC6NkrCfxfwYEydCnqT/RTPQXiQb2Dkxow6TBjyKI7ftupqHyIiu3jF33QuD9seFTiP4S4oI0TD4iJeF6MO9Uv8gT6+QTpwd2LliKh584hBUuEjOX5 wkUNYF/q oHiGAbWnGP5vSKE8d4cXx1AJOfARtMtZsCbR2q4yTh3iENwzy0aUyGl9oocgPyCyorMITK/9N8th2M2ZBu0NqjcjPMXXzLcODUWEYMobuU4J82pEyCqDUK2ZkTy50MNTHZE4Z/nGZ1tJ9cISFVOu5jb5HnQeOOxmtlDmChrym8R328+i91tEVNktC9t6OyMOSJMg09bpOfiNUGJEq5NwBXdQ7pVycoqXJqVclqGshHn7f6PI= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: From: Leon Romanovsky All platforms which implement map_page interface don't support physical addresses without real struct page. Add condition to check it. Signed-off-by: Leon Romanovsky --- kernel/dma/mapping.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/kernel/dma/mapping.c b/kernel/dma/mapping.c index 709405d46b2b..74efb6909103 100644 --- a/kernel/dma/mapping.c +++ b/kernel/dma/mapping.c @@ -158,6 +158,7 @@ dma_addr_t dma_map_page_attrs(struct device *dev, struct page *page, { const struct dma_map_ops *ops = get_dma_ops(dev); phys_addr_t phys = page_to_phys(page) + offset; + bool is_pfn_valid = true; dma_addr_t addr; BUG_ON(!valid_dma_direction(dir)); @@ -170,8 +171,20 @@ dma_addr_t dma_map_page_attrs(struct device *dev, struct page *page, addr = dma_direct_map_phys(dev, phys, size, dir, attrs); else if (use_dma_iommu(dev)) addr = iommu_dma_map_phys(dev, phys, size, dir, attrs); - else + else { + if (IS_ENABLED(CONFIG_DMA_API_DEBUG)) + is_pfn_valid = pfn_valid(PHYS_PFN(phys)); + + if (unlikely(!is_pfn_valid)) + return DMA_MAPPING_ERROR; + + /* + * All platforms which implement .map_page() don't support + * non-struct page backed addresses. + */ addr = ops->map_page(dev, page, offset, size, dir, attrs); + } + kmsan_handle_dma(phys, size, dir); trace_dma_map_phys(dev, phys, addr, size, dir, attrs); debug_dma_map_phys(dev, phys, size, dir, addr, attrs); -- 2.49.0