From patchwork Tue Jun 28 14:46:49 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Fabio M. De Francesco" X-Patchwork-Id: 12898401 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 C2C62C3F2D4 for ; Tue, 28 Jun 2022 14:47:11 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id F3E308E0001; Tue, 28 Jun 2022 10:47:10 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id EEDD96B0072; Tue, 28 Jun 2022 10:47:10 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id DB55C8E0001; Tue, 28 Jun 2022 10:47:10 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id CD3EE6B0071 for ; Tue, 28 Jun 2022 10:47:10 -0400 (EDT) Received: from smtpin23.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 968B320BD3 for ; Tue, 28 Jun 2022 14:47:10 +0000 (UTC) X-FDA: 79627922220.23.8E9C849 Received: from mail-ed1-f50.google.com (mail-ed1-f50.google.com [209.85.208.50]) by imf03.hostedemail.com (Postfix) with ESMTP id 6859720012 for ; Tue, 28 Jun 2022 14:47:09 +0000 (UTC) Received: by mail-ed1-f50.google.com with SMTP id n8so3971523eda.0 for ; Tue, 28 Jun 2022 07:47:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=dIIRV/7xVavrFkkRlTpxT9AeMVsp3yCltb4nZgV8P1s=; b=qGNxf1bADOzY0oaDCwYwIYCbj/BRm3RniW/mZ+asrY9SGcUIcMECDpkK4UtWVHbbDI fCTlTo9PM5Z/rnNmijNug+wKrLQyZLBzoX6ybPKlvv43gbiny9BsSkAJIG3upIUx3x3W rarZFrRNv45vuEAlWH1gssTuA8V4/O+63QgL2FF6YHq3cOYHXojGzN62fWS6zjnePhMf GWzoVxdZxCyCaCLXwLF/m4vtuanQ+uS+EBRDgXpzvHKuyvDDeJ0ORlKtatCryLvUHrwf LCEsHG8WNgcZbd/SRgDj7+g/IAxFd7IZ1970+2Y7o6NR+QKuIQZrG65jEUzaNKD3jqwA G8cw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=dIIRV/7xVavrFkkRlTpxT9AeMVsp3yCltb4nZgV8P1s=; b=O7O8tWWcPhE+sZNAm5Dms2h5rCsolWgVVVt9VbeWsjfVPidIUssRxnHhL/MgBUaquE qmyXODOHDORO/vlNipqcDAEddSRtMURMjNUv2dOXR1JlCXLoNZHLGxAjUKHHS44gOPOf lFATzBjfjjfZcI5w02CmwaKCDqrtN17mwuA9dCKNrsNcU4geVxpx2gmGmX4uwPNHUgRg lDqp2etoSjWYAOoCPf0eBpEIQk90kuIAbkliU1UB8H2wBn1piFx1WDNDWYvGcd17Y3gt 6xvniJ/HCjWTuZaKcITI94P1OGUtBy+2DM7ZKvgy7AYr3Ok8gP6tr35lcLPxiNnozsgP Dfeg== X-Gm-Message-State: AJIora/6u8eD5TOPk4xvBj5xoiBmpUalkvRcwcmGb4y9KuBVtZ+V3QG5 MfrW/xk949odq1bJkBXSQjs= X-Google-Smtp-Source: AGRyM1s8agwP30emipXMea2Yd5kcSZn4HD82LY6PSp7nDUobBq+OMJE80ZA0m5S5w638nDjHfKOKQw== X-Received: by 2002:a05:6402:320f:b0:435:7236:e312 with SMTP id g15-20020a056402320f00b004357236e312mr23890254eda.115.1656427627929; Tue, 28 Jun 2022 07:47:07 -0700 (PDT) Received: from localhost.localdomain (host-87-6-98-182.retail.telecomitalia.it. [87.6.98.182]) by smtp.gmail.com with ESMTPSA id v10-20020a1709063bca00b006ffa19b7782sm6450420ejf.74.2022.06.28.07.47.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 28 Jun 2022 07:47:06 -0700 (PDT) From: "Fabio M. De Francesco" To: David Sterba , Chris Mason , Josef Bacik , Nick Terrell , linux-btrfs@vger.kernel.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, Ira Weiny , Andrew Morton , Matthew Wilcox , Kees Cook , Sebastian Andrzej Siewior , "James E. J. Bottomley" , Helge Deller , John David Anglin , linux-parisc@vger.kernel.org Cc: "Fabio M. De Francesco" , David Sterba Subject: [RESEND PATCH v4 1/2] highmem: Make __kunmap_{local,atomic}() take "const void *" Date: Tue, 28 Jun 2022 16:46:49 +0200 Message-Id: <20220628144649.28046-1-fmdefrancesco@gmail.com> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220627111927.3ef94745aab4491901d43028@linux-foundation.org> References: <20220627111927.3ef94745aab4491901d43028@linux-foundation.org> MIME-Version: 1.0 ARC-Authentication-Results: i=1; imf03.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=qGNxf1bA; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf03.hostedemail.com: domain of fmdefrancesco@gmail.com designates 209.85.208.50 as permitted sender) smtp.mailfrom=fmdefrancesco@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1656427629; 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=dIIRV/7xVavrFkkRlTpxT9AeMVsp3yCltb4nZgV8P1s=; b=j5XH+j+vdU5YQEMrNMSroXS78VCofol3TSnWivVzvRZ42zBZ9Z9dBDOexRKgfzxlaloSjU AzEGBYD0PcIfXxcSeHagYDWQiqaeowzibT6mos4TGdWlrCNUp1NTkgTdXsVz6FhhGGxvet Mcr1ufOQFlsvwnPcCrHC0kyx2wlOcZc= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1656427629; a=rsa-sha256; cv=none; b=EDfiejPcW6VENMj+MR6tNMHLZx8+uGwwwAlr4IPni6O/zKT4F7czlcjyh6YQUzENiPnKFX kouOpoUcRX8jjDE4q5PZvTm7nB3dKs29rZ8GLUfK0vYzgEi1CdR3BD6Nlnmzoz9Kq2me3j lMKLxQK3UxjaXtAwefp/ax50xNv3PLw= X-Stat-Signature: dtyg1bzfzwtgtqjr5w3er781x1kquudh X-Rspamd-Queue-Id: 6859720012 Authentication-Results: imf03.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=qGNxf1bA; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf03.hostedemail.com: domain of fmdefrancesco@gmail.com designates 209.85.208.50 as permitted sender) smtp.mailfrom=fmdefrancesco@gmail.com X-Rspam-User: X-Rspamd-Server: rspam04 X-HE-Tag: 1656427629-113955 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: __kunmap_ {local,atomic}() currently take pointers to void. However, this is semantically incorrect, since these functions do not change the memory their arguments point to. Therefore, make this semantics explicit by modifying the __kunmap_{local,atomic}() prototypes to take pointers to const void. As a side effect, compilers will likely produce more efficient code. Cc: Andrew Morton Suggested-by: David Sterba Suggested-by: Ira Weiny Signed-off-by: Fabio M. De Francesco Reviewed-by: Ira Weiny --- This is a resend of the same patch CC'ed to linux-mm. v3->v4: Cc Maintainers and mailing lists I had overlooked when I sent v3. v2->v3: Fix compilation errors for ARCH=parisc. Reported-by: kernel test robot v1->v2: Change the commit message to clearly explain why these functions should require pointers to const void. The fundamental argument behind the commit message changes is semantic correctness. Obviously, there are no changes to the code. Many thanks to David Sterba and Ira Weiny for suggestions and reviews. arch/parisc/include/asm/cacheflush.h | 6 +++--- arch/parisc/kernel/cache.c | 2 +- include/linux/highmem-internal.h | 10 +++++----- mm/highmem.c | 2 +- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/arch/parisc/include/asm/cacheflush.h b/arch/parisc/include/asm/cacheflush.h index 8d03b3b26229..0bdee6724132 100644 --- a/arch/parisc/include/asm/cacheflush.h +++ b/arch/parisc/include/asm/cacheflush.h @@ -22,7 +22,7 @@ void flush_kernel_icache_range_asm(unsigned long, unsigned long); void flush_user_dcache_range_asm(unsigned long, unsigned long); void flush_kernel_dcache_range_asm(unsigned long, unsigned long); void purge_kernel_dcache_range_asm(unsigned long, unsigned long); -void flush_kernel_dcache_page_asm(void *); +void flush_kernel_dcache_page_asm(const void *addr); void flush_kernel_icache_page(void *); /* Cache flush operations */ @@ -31,7 +31,7 @@ void flush_cache_all_local(void); void flush_cache_all(void); void flush_cache_mm(struct mm_struct *mm); -void flush_kernel_dcache_page_addr(void *addr); +void flush_kernel_dcache_page_addr(const void *addr); #define flush_kernel_dcache_range(start,size) \ flush_kernel_dcache_range_asm((start), (start)+(size)); @@ -75,7 +75,7 @@ void flush_dcache_page_asm(unsigned long phys_addr, unsigned long vaddr); void flush_anon_page(struct vm_area_struct *vma, struct page *page, unsigned long vmaddr); #define ARCH_HAS_FLUSH_ON_KUNMAP -static inline void kunmap_flush_on_unmap(void *addr) +static inline void kunmap_flush_on_unmap(const void *addr) { flush_kernel_dcache_page_addr(addr); } diff --git a/arch/parisc/kernel/cache.c b/arch/parisc/kernel/cache.c index a9bc578e4c52..993999a65e54 100644 --- a/arch/parisc/kernel/cache.c +++ b/arch/parisc/kernel/cache.c @@ -549,7 +549,7 @@ extern void purge_kernel_dcache_page_asm(unsigned long); extern void clear_user_page_asm(void *, unsigned long); extern void copy_user_page_asm(void *, void *, unsigned long); -void flush_kernel_dcache_page_addr(void *addr) +void flush_kernel_dcache_page_addr(const void *addr) { unsigned long flags; diff --git a/include/linux/highmem-internal.h b/include/linux/highmem-internal.h index cddb42ff0473..034b1106d022 100644 --- a/include/linux/highmem-internal.h +++ b/include/linux/highmem-internal.h @@ -8,7 +8,7 @@ #ifdef CONFIG_KMAP_LOCAL void *__kmap_local_pfn_prot(unsigned long pfn, pgprot_t prot); void *__kmap_local_page_prot(struct page *page, pgprot_t prot); -void kunmap_local_indexed(void *vaddr); +void kunmap_local_indexed(const void *vaddr); void kmap_local_fork(struct task_struct *tsk); void __kmap_local_sched_out(void); void __kmap_local_sched_in(void); @@ -89,7 +89,7 @@ static inline void *kmap_local_pfn(unsigned long pfn) return __kmap_local_pfn_prot(pfn, kmap_prot); } -static inline void __kunmap_local(void *vaddr) +static inline void __kunmap_local(const void *vaddr) { kunmap_local_indexed(vaddr); } @@ -121,7 +121,7 @@ static inline void *kmap_atomic_pfn(unsigned long pfn) return __kmap_local_pfn_prot(pfn, kmap_prot); } -static inline void __kunmap_atomic(void *addr) +static inline void __kunmap_atomic(const void *addr) { kunmap_local_indexed(addr); pagefault_enable(); @@ -197,7 +197,7 @@ static inline void *kmap_local_pfn(unsigned long pfn) return kmap_local_page(pfn_to_page(pfn)); } -static inline void __kunmap_local(void *addr) +static inline void __kunmap_local(const void *addr) { #ifdef ARCH_HAS_FLUSH_ON_KUNMAP kunmap_flush_on_unmap(addr); @@ -224,7 +224,7 @@ static inline void *kmap_atomic_pfn(unsigned long pfn) return kmap_atomic(pfn_to_page(pfn)); } -static inline void __kunmap_atomic(void *addr) +static inline void __kunmap_atomic(const void *addr) { #ifdef ARCH_HAS_FLUSH_ON_KUNMAP kunmap_flush_on_unmap(addr); diff --git a/mm/highmem.c b/mm/highmem.c index 1a692997fac4..e32083e4ce0d 100644 --- a/mm/highmem.c +++ b/mm/highmem.c @@ -561,7 +561,7 @@ void *__kmap_local_page_prot(struct page *page, pgprot_t prot) } EXPORT_SYMBOL(__kmap_local_page_prot); -void kunmap_local_indexed(void *vaddr) +void kunmap_local_indexed(const void *vaddr) { unsigned long addr = (unsigned long) vaddr & PAGE_MASK; pte_t *kmap_pte;