mirror of
https://github.com/torvalds/linux.git
synced 2026-04-18 06:44:00 -04:00
s390/mm: make virt_to_pfn() a static inline
Making virt_to_pfn() a static inline taking a strongly typed (const void *) makes the contract of a passing a pointer of that type to the function explicit and exposes any misuse of the macro virt_to_pfn() acting polymorphic and accepting many types such as (void *), (unitptr_t) or (unsigned long) as arguments without warnings. For symmetry do the same with pfn_to_virt() reflecting the current layout in asm-generic/page.h. Doing this reveals a number of offenders in the arch code and the S390-specific drivers, so just bite the bullet and fix up all of those as well. Signed-off-by: Linus Walleij <linus.walleij@linaro.org> Reviewed-by: Alexander Gordeev <agordeev@linux.ibm.com> Link: https://lore.kernel.org/r/20230812-virt-to-phys-s390-v2-1-6c40f31fe36f@linaro.org Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
This commit is contained in:
committed by
Heiko Carstens
parent
5cfdff02e9
commit
2d1494fb31
@@ -191,8 +191,16 @@ int arch_make_page_accessible(struct page *page);
|
||||
#define phys_to_page(phys) pfn_to_page(phys_to_pfn(phys))
|
||||
#define page_to_phys(page) pfn_to_phys(page_to_pfn(page))
|
||||
|
||||
#define pfn_to_virt(pfn) __va(pfn_to_phys(pfn))
|
||||
#define virt_to_pfn(kaddr) (phys_to_pfn(__pa(kaddr)))
|
||||
static inline void *pfn_to_virt(unsigned long pfn)
|
||||
{
|
||||
return __va(pfn_to_phys(pfn));
|
||||
}
|
||||
|
||||
static inline unsigned long virt_to_pfn(const void *kaddr)
|
||||
{
|
||||
return phys_to_pfn(__pa(kaddr));
|
||||
}
|
||||
|
||||
#define pfn_to_kaddr(pfn) pfn_to_virt(pfn)
|
||||
|
||||
#define virt_to_page(kaddr) pfn_to_page(virt_to_pfn(kaddr))
|
||||
|
||||
Reference in New Issue
Block a user