mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/herbert/cryptodev-2.6.git
synced 2026-04-18 03:23:53 -04:00
mm: constify highmem related functions for improved const-correctness
Lots of functions in mm/highmem.c do not write to the given pointers and do not call functions that take non-const pointers and can therefore be constified. This includes functions like kunmap() which might be implemented in a way that writes to the pointer (e.g. to update reference counters or mapping fields), but currently are not. kmap() on the other hand cannot be made const because it calls set_page_address() which is non-const in some architectures/configurations. [akpm@linux-foundation.org: "fix" folio_page() build failure] Link: https://lkml.kernel.org/r/20250901205021.3573313-13-max.kellermann@ionos.com Signed-off-by: Max Kellermann <max.kellermann@ionos.com> Reviewed-by: Lorenzo Stoakes <lorenzo.stoakes@oracle.com> Acked-by: David Hildenbrand <david@redhat.com> Acked-by: Vlastimil Babka <vbabka@suse.cz> Acked-by: Mike Rapoport (Microsoft) <rppt@kernel.org> Acked-by: Shakeel Butt <shakeel.butt@linux.dev> Cc: Alexander Gordeev <agordeev@linux.ibm.com> Cc: Al Viro <viro@zeniv.linux.org.uk> Cc: Andreas Larsson <andreas@gaisler.com> Cc: Andy Lutomirski <luto@kernel.org> Cc: Axel Rasmussen <axelrasmussen@google.com> Cc: Baolin Wang <baolin.wang@linux.alibaba.com> Cc: Borislav Betkov <bp@alien8.de> Cc: Christian Borntraeger <borntraeger@linux.ibm.com> Cc: Christian Brauner <brauner@kernel.org> Cc: Christian Zankel <chris@zankel.net> Cc: David Rientjes <rientjes@google.com> Cc: David S. Miller <davem@davemloft.net> Cc: Gerald Schaefer <gerald.schaefer@linux.ibm.com> Cc: Heiko Carstens <hca@linux.ibm.com> Cc: Helge Deller <deller@gmx.de> Cc: "H. Peter Anvin" <hpa@zytor.com> Cc: Hugh Dickins <hughd@google.com> Cc: Ingo Molnar <mingo@redhat.com> Cc: James Bottomley <james.bottomley@HansenPartnership.com> Cc: Jan Kara <jack@suse.cz> Cc: Jocelyn Falempe <jfalempe@redhat.com> Cc: Liam Howlett <liam.howlett@oracle.com> Cc: Mark Brown <broonie@kernel.org> Cc: Matthew Wilcox (Oracle) <willy@infradead.org> Cc: Max Filippov <jcmvbkbc@gmail.com> Cc: Michael Ellerman <mpe@ellerman.id.au> Cc: Michal Hocko <mhocko@suse.com> Cc: "Nysal Jan K.A" <nysal@linux.ibm.com> Cc: Oscar Salvador <osalvador@suse.de> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Russel King <linux@armlinux.org.uk> Cc: Suren Baghdasaryan <surenb@google.com> Cc: Sven Schnelle <svens@linux.ibm.com> Cc: Thomas Gleinxer <tglx@linutronix.de> Cc: Thomas Huth <thuth@redhat.com> Cc: Vasily Gorbik <gor@linux.ibm.com> Cc: Vishal Moola (Oracle) <vishal.moola@gmail.com> Cc: Wei Xu <weixugc@google.com> Cc: Yuanchu Xie <yuanchu@google.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
committed by
Andrew Morton
parent
da0045587d
commit
a847b17009
@@ -7,7 +7,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 *__kmap_local_page_prot(const struct page *page, pgprot_t prot);
|
||||
void kunmap_local_indexed(const void *vaddr);
|
||||
void kmap_local_fork(struct task_struct *tsk);
|
||||
void __kmap_local_sched_out(void);
|
||||
@@ -33,7 +33,7 @@ static inline void kmap_flush_tlb(unsigned long addr) { }
|
||||
#endif
|
||||
|
||||
void *kmap_high(struct page *page);
|
||||
void kunmap_high(struct page *page);
|
||||
void kunmap_high(const struct page *page);
|
||||
void __kmap_flush_unused(void);
|
||||
struct page *__kmap_to_page(void *addr);
|
||||
|
||||
@@ -50,7 +50,7 @@ static inline void *kmap(struct page *page)
|
||||
return addr;
|
||||
}
|
||||
|
||||
static inline void kunmap(struct page *page)
|
||||
static inline void kunmap(const struct page *page)
|
||||
{
|
||||
might_sleep();
|
||||
if (!PageHighMem(page))
|
||||
@@ -68,12 +68,12 @@ static inline void kmap_flush_unused(void)
|
||||
__kmap_flush_unused();
|
||||
}
|
||||
|
||||
static inline void *kmap_local_page(struct page *page)
|
||||
static inline void *kmap_local_page(const struct page *page)
|
||||
{
|
||||
return __kmap_local_page_prot(page, kmap_prot);
|
||||
}
|
||||
|
||||
static inline void *kmap_local_page_try_from_panic(struct page *page)
|
||||
static inline void *kmap_local_page_try_from_panic(const struct page *page)
|
||||
{
|
||||
if (!PageHighMem(page))
|
||||
return page_address(page);
|
||||
@@ -81,13 +81,13 @@ static inline void *kmap_local_page_try_from_panic(struct page *page)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static inline void *kmap_local_folio(struct folio *folio, size_t offset)
|
||||
static inline void *kmap_local_folio(const struct folio *folio, size_t offset)
|
||||
{
|
||||
struct page *page = folio_page(folio, offset / PAGE_SIZE);
|
||||
const struct page *page = folio_page(folio, offset / PAGE_SIZE);
|
||||
return __kmap_local_page_prot(page, kmap_prot) + offset % PAGE_SIZE;
|
||||
}
|
||||
|
||||
static inline void *kmap_local_page_prot(struct page *page, pgprot_t prot)
|
||||
static inline void *kmap_local_page_prot(const struct page *page, pgprot_t prot)
|
||||
{
|
||||
return __kmap_local_page_prot(page, prot);
|
||||
}
|
||||
@@ -102,7 +102,7 @@ static inline void __kunmap_local(const void *vaddr)
|
||||
kunmap_local_indexed(vaddr);
|
||||
}
|
||||
|
||||
static inline void *kmap_atomic_prot(struct page *page, pgprot_t prot)
|
||||
static inline void *kmap_atomic_prot(const struct page *page, pgprot_t prot)
|
||||
{
|
||||
if (IS_ENABLED(CONFIG_PREEMPT_RT))
|
||||
migrate_disable();
|
||||
@@ -113,7 +113,7 @@ static inline void *kmap_atomic_prot(struct page *page, pgprot_t prot)
|
||||
return __kmap_local_page_prot(page, prot);
|
||||
}
|
||||
|
||||
static inline void *kmap_atomic(struct page *page)
|
||||
static inline void *kmap_atomic(const struct page *page)
|
||||
{
|
||||
return kmap_atomic_prot(page, kmap_prot);
|
||||
}
|
||||
@@ -173,32 +173,32 @@ static inline void *kmap(struct page *page)
|
||||
return page_address(page);
|
||||
}
|
||||
|
||||
static inline void kunmap_high(struct page *page) { }
|
||||
static inline void kunmap_high(const struct page *page) { }
|
||||
static inline void kmap_flush_unused(void) { }
|
||||
|
||||
static inline void kunmap(struct page *page)
|
||||
static inline void kunmap(const struct page *page)
|
||||
{
|
||||
#ifdef ARCH_HAS_FLUSH_ON_KUNMAP
|
||||
kunmap_flush_on_unmap(page_address(page));
|
||||
#endif
|
||||
}
|
||||
|
||||
static inline void *kmap_local_page(struct page *page)
|
||||
static inline void *kmap_local_page(const struct page *page)
|
||||
{
|
||||
return page_address(page);
|
||||
}
|
||||
|
||||
static inline void *kmap_local_page_try_from_panic(struct page *page)
|
||||
static inline void *kmap_local_page_try_from_panic(const struct page *page)
|
||||
{
|
||||
return page_address(page);
|
||||
}
|
||||
|
||||
static inline void *kmap_local_folio(struct folio *folio, size_t offset)
|
||||
static inline void *kmap_local_folio(const struct folio *folio, size_t offset)
|
||||
{
|
||||
return folio_address(folio) + offset;
|
||||
}
|
||||
|
||||
static inline void *kmap_local_page_prot(struct page *page, pgprot_t prot)
|
||||
static inline void *kmap_local_page_prot(const struct page *page, pgprot_t prot)
|
||||
{
|
||||
return kmap_local_page(page);
|
||||
}
|
||||
@@ -215,7 +215,7 @@ static inline void __kunmap_local(const void *addr)
|
||||
#endif
|
||||
}
|
||||
|
||||
static inline void *kmap_atomic(struct page *page)
|
||||
static inline void *kmap_atomic(const struct page *page)
|
||||
{
|
||||
if (IS_ENABLED(CONFIG_PREEMPT_RT))
|
||||
migrate_disable();
|
||||
@@ -225,7 +225,7 @@ static inline void *kmap_atomic(struct page *page)
|
||||
return page_address(page);
|
||||
}
|
||||
|
||||
static inline void *kmap_atomic_prot(struct page *page, pgprot_t prot)
|
||||
static inline void *kmap_atomic_prot(const struct page *page, pgprot_t prot)
|
||||
{
|
||||
return kmap_atomic(page);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user