arm64: memory: 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. Since arm64 is using <asm-generic/memory_model.h> to provide __phys_to_pfn() we need to move the inclusion of that header up, so we can resolve the static inline at compile time. Acked-by: Catalin Marinas <catalin.marinas@arm.com> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
This commit is contained in:
parent
a9ff696160
commit
c94b1a012f
@ -331,6 +331,14 @@ static inline void *phys_to_virt(phys_addr_t x)
|
|||||||
return (void *)(__phys_to_virt(x));
|
return (void *)(__phys_to_virt(x));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Needed already here for resolving __phys_to_pfn() in virt_to_pfn() */
|
||||||
|
#include <asm-generic/memory_model.h>
|
||||||
|
|
||||||
|
static inline unsigned long virt_to_pfn(const void *kaddr)
|
||||||
|
{
|
||||||
|
return __phys_to_pfn(virt_to_phys(kaddr));
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Drivers should NOT use these either.
|
* Drivers should NOT use these either.
|
||||||
*/
|
*/
|
||||||
@ -339,7 +347,6 @@ static inline void *phys_to_virt(phys_addr_t x)
|
|||||||
#define __pa_nodebug(x) __virt_to_phys_nodebug((unsigned long)(x))
|
#define __pa_nodebug(x) __virt_to_phys_nodebug((unsigned long)(x))
|
||||||
#define __va(x) ((void *)__phys_to_virt((phys_addr_t)(x)))
|
#define __va(x) ((void *)__phys_to_virt((phys_addr_t)(x)))
|
||||||
#define pfn_to_kaddr(pfn) __va((pfn) << PAGE_SHIFT)
|
#define pfn_to_kaddr(pfn) __va((pfn) << PAGE_SHIFT)
|
||||||
#define virt_to_pfn(x) __phys_to_pfn(__virt_to_phys((unsigned long)(x)))
|
|
||||||
#define sym_to_pfn(x) __phys_to_pfn(__pa_symbol(x))
|
#define sym_to_pfn(x) __phys_to_pfn(__pa_symbol(x))
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
Loading…
Reference in New Issue
Block a user