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=-9.6 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,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 C0E27C432C0 for ; Fri, 29 Nov 2019 11:03:48 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 7D750208E4 for ; Fri, 29 Nov 2019 11:03:48 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="lqGFRRH9" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 7D750208E4 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id 2BAD06B0578; Fri, 29 Nov 2019 06:03:48 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 242AB6B0579; Fri, 29 Nov 2019 06:03:48 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 0E3E26B057A; Fri, 29 Nov 2019 06:03:48 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0212.hostedemail.com [216.40.44.212]) by kanga.kvack.org (Postfix) with ESMTP id EFEB16B0577 for ; Fri, 29 Nov 2019 06:03:47 -0500 (EST) Received: from smtpin20.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay02.hostedemail.com (Postfix) with SMTP id 638A08E58 for ; Fri, 29 Nov 2019 11:03:47 +0000 (UTC) X-FDA: 76209029694.20.pet88_3e2153cf70d45 X-HE-Tag: pet88_3e2153cf70d45 X-Filterd-Recvd-Size: 4638 Received: from mail-pg1-f196.google.com (mail-pg1-f196.google.com [209.85.215.196]) by imf19.hostedemail.com (Postfix) with ESMTP for ; Fri, 29 Nov 2019 11:03:46 +0000 (UTC) Received: by mail-pg1-f196.google.com with SMTP id k1so5887344pga.13 for ; Fri, 29 Nov 2019 03:03:46 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=bQaztd6H//OV30Bo0EObWm1ZxBnDlIoPVUN9tARbU6I=; b=lqGFRRH9pbhHpEOMm/ZRBKVCNGOjw41RFz7C96kknAc4QXS8xriEdSjnXJU6es8mF5 JhJPgCYXxWa5SXF5WXsnNdmwvc6whyOBQeerVYjBUi2wPLDpF41pTLEBnokBrjxClMt6 JvDm3uKXTzlPPW36Y8QtdGuhK5vrlNLKc/9raQ1BMe49Jf8cl5B++UpuPzUyO2f6AtzW GFgi5RViqYrRkBxJHIeooswbzHCuTLoK2EvVI37YGE2RTUaEATXM16+dH4z08vzMT8Q1 tou7qtPx9EQQNrHSkElpt1OOW9jTjbfwI+XDV9rkDBF1hpSW1ioQKf+nzvdB/wnK3rXf MI2A== 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; bh=bQaztd6H//OV30Bo0EObWm1ZxBnDlIoPVUN9tARbU6I=; b=m4kSZN/Is67w9vpTdbwtxHdhLuta81/1KvBeuhPszHZ39M2zHlnqxPnURXgDfUmrER FvPnKp1+QuuEC8/4u8kOEzd9153snryzgiU0L7axsZiWNna1C8QIuGazMSXpR1kCIPL/ sb/J/Q49rPoMqA2Crf/1Yfi0O0ntgyQterfVqeyHZ1FFvHait6rBuL9sTSDvik6cRLgc Oe/Mu3zfvT93QygMFw18mdV1pqrk480/GK3GU+hgP3MAHTSE54pD53UtCZkvOgkD5R6j 3YBEsN4EDYtlQNz23BOUlcee7vm9l5DJLuIucbDIh6bPsqYgOkYwSoaKSbwAsKquLxzN vBeg== X-Gm-Message-State: APjAAAWPS1BHPxSIqbg6EJUQs/ZLIj6SLPMIEOKCUx107ZwSxUUFEkJL x9AUAqBX/0U8er4KU97R3t0= X-Google-Smtp-Source: APXvYqyQDiqV3ZEJNgdmU8kqllIQcJAoaYTF1cGPu5OJVURX2j0TSk6k0BbMdIOIzfr5R8QQxCr3oA== X-Received: by 2002:a63:c406:: with SMTP id h6mr16520585pgd.213.1575025425828; Fri, 29 Nov 2019 03:03:45 -0800 (PST) Received: from localhost ([43.224.245.181]) by smtp.gmail.com with ESMTPSA id g7sm23118907pgr.52.2019.11.29.03.03.44 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 29 Nov 2019 03:03:44 -0800 (PST) From: lijiazi X-Google-Original-From: lijiazi To: Christoph Hellwig , Marek Szyprowski , Robin Murphy , Andrew Morton Cc: lijiazi , iommu@lists.linux-foundation.org, linux-mm@kvack.org Subject: [PATCH] dma-mapping: do not mapping module memory Date: Fri, 29 Nov 2019 19:03:40 +0800 Message-Id: X-Mailer: git-send-email 2.7.4 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: On ARM, x86_64, sparc64 platform, virt_to_page only convert a _valid_ virtual address to struct page *, virt_addr_valid(x) indicates whether a virtual address is valid. If ptr is point to a static variable in module area, virt_to_page will return a invalid value. Signed-off-by: lijiazi --- include/linux/dma-mapping.h | 10 +++++++--- mm/vmalloc.c | 1 + 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/include/linux/dma-mapping.h b/include/linux/dma-mapping.h index 330ad58..37e645d 100644 --- a/include/linux/dma-mapping.h +++ b/include/linux/dma-mapping.h @@ -580,9 +580,13 @@ static inline unsigned long dma_get_merge_boundary(struct device *dev) static inline dma_addr_t dma_map_single_attrs(struct device *dev, void *ptr, size_t size, enum dma_data_direction dir, unsigned long attrs) { - /* DMA must never operate on areas that might be remapped. */ - if (dev_WARN_ONCE(dev, is_vmalloc_addr(ptr), - "rejecting DMA map of vmalloc memory\n")) + /* DMA must never operate on areas that might be remapped. + * ARM, X86_64, sparc64 put module in a special place, if ptr + * point to static variable in module area, virt_to_page will + * return err page *. + */ + if (dev_WARN_ONCE(dev, is_vmalloc_or_module_addr(ptr), + "rejecting DMA map of vmalloc or module memory\n")) return DMA_MAPPING_ERROR; debug_dma_map_single(dev, ptr, size); return dma_map_page_attrs(dev, virt_to_page(ptr), offset_in_page(ptr), diff --git a/mm/vmalloc.c b/mm/vmalloc.c index 588303a..71ce6dc 100644 --- a/mm/vmalloc.c +++ b/mm/vmalloc.c @@ -262,6 +262,7 @@ int is_vmalloc_or_module_addr(const void *x) #endif return is_vmalloc_addr(x); } +EXPORT_SYMBOL(is_vmalloc_or_module_addr); /* * Walk a vmap address to the struct page it maps. -- 2.7.4