powerpc/uaccess: Move copy_mc_xxx() functions down
copy_mc_xxx() functions are in the middle of raw_copy functions. For clarity, move them out of the raw_copy functions block. They are using access_ok, so they need to be after the general functions in order to eventually allow the inclusion of asm-generic/uaccess.h in some future. Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Link: https://lore.kernel.org/r/2cdecb6e5a2fcee6c158d18dd254b71ec0e0da4d.1615398498.git.christophe.leroy@csgroup.eu
This commit is contained in:
parent
7472199a6e
commit
4b8cda5881
@ -351,32 +351,6 @@ do { \
|
|||||||
extern unsigned long __copy_tofrom_user(void __user *to,
|
extern unsigned long __copy_tofrom_user(void __user *to,
|
||||||
const void __user *from, unsigned long size);
|
const void __user *from, unsigned long size);
|
||||||
|
|
||||||
#ifdef CONFIG_ARCH_HAS_COPY_MC
|
|
||||||
unsigned long __must_check
|
|
||||||
copy_mc_generic(void *to, const void *from, unsigned long size);
|
|
||||||
|
|
||||||
static inline unsigned long __must_check
|
|
||||||
copy_mc_to_kernel(void *to, const void *from, unsigned long size)
|
|
||||||
{
|
|
||||||
return copy_mc_generic(to, from, size);
|
|
||||||
}
|
|
||||||
#define copy_mc_to_kernel copy_mc_to_kernel
|
|
||||||
|
|
||||||
static inline unsigned long __must_check
|
|
||||||
copy_mc_to_user(void __user *to, const void *from, unsigned long n)
|
|
||||||
{
|
|
||||||
if (likely(check_copy_size(from, n, true))) {
|
|
||||||
if (access_ok(to, n)) {
|
|
||||||
allow_write_to_user(to, n);
|
|
||||||
n = copy_mc_generic((void *)to, from, n);
|
|
||||||
prevent_write_to_user(to, n);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return n;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef __powerpc64__
|
#ifdef __powerpc64__
|
||||||
static inline unsigned long
|
static inline unsigned long
|
||||||
raw_copy_in_user(void __user *to, const void __user *from, unsigned long n)
|
raw_copy_in_user(void __user *to, const void __user *from, unsigned long n)
|
||||||
@ -433,6 +407,32 @@ static inline unsigned long clear_user(void __user *addr, unsigned long size)
|
|||||||
extern long strncpy_from_user(char *dst, const char __user *src, long count);
|
extern long strncpy_from_user(char *dst, const char __user *src, long count);
|
||||||
extern __must_check long strnlen_user(const char __user *str, long n);
|
extern __must_check long strnlen_user(const char __user *str, long n);
|
||||||
|
|
||||||
|
#ifdef CONFIG_ARCH_HAS_COPY_MC
|
||||||
|
unsigned long __must_check
|
||||||
|
copy_mc_generic(void *to, const void *from, unsigned long size);
|
||||||
|
|
||||||
|
static inline unsigned long __must_check
|
||||||
|
copy_mc_to_kernel(void *to, const void *from, unsigned long size)
|
||||||
|
{
|
||||||
|
return copy_mc_generic(to, from, size);
|
||||||
|
}
|
||||||
|
#define copy_mc_to_kernel copy_mc_to_kernel
|
||||||
|
|
||||||
|
static inline unsigned long __must_check
|
||||||
|
copy_mc_to_user(void __user *to, const void *from, unsigned long n)
|
||||||
|
{
|
||||||
|
if (likely(check_copy_size(from, n, true))) {
|
||||||
|
if (access_ok(to, n)) {
|
||||||
|
allow_write_to_user(to, n);
|
||||||
|
n = copy_mc_generic((void *)to, from, n);
|
||||||
|
prevent_write_to_user(to, n);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return n;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
extern long __copy_from_user_flushcache(void *dst, const void __user *src,
|
extern long __copy_from_user_flushcache(void *dst, const void __user *src,
|
||||||
unsigned size);
|
unsigned size);
|
||||||
extern void memcpy_page_flushcache(char *to, struct page *page, size_t offset,
|
extern void memcpy_page_flushcache(char *to, struct page *page, size_t offset,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user