xtensa: use generic strncpy_from_user with KASAN
This enables KASAN check of the destination buffer. Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
This commit is contained in:
parent
e0baa01438
commit
57358ba956
@ -15,6 +15,7 @@ config XTENSA
|
|||||||
select GENERIC_IRQ_SHOW
|
select GENERIC_IRQ_SHOW
|
||||||
select GENERIC_PCI_IOMAP
|
select GENERIC_PCI_IOMAP
|
||||||
select GENERIC_SCHED_CLOCK
|
select GENERIC_SCHED_CLOCK
|
||||||
|
select GENERIC_STRNCPY_FROM_USER if KASAN
|
||||||
select HAVE_ARCH_KASAN if MMU
|
select HAVE_ARCH_KASAN if MMU
|
||||||
select HAVE_CC_STACKPROTECTOR
|
select HAVE_CC_STACKPROTECTOR
|
||||||
select HAVE_DEBUG_KMEMLEAK
|
select HAVE_DEBUG_KMEMLEAK
|
||||||
|
@ -44,6 +44,8 @@
|
|||||||
#define __access_ok(addr, size) (__kernel_ok || __user_ok((addr), (size)))
|
#define __access_ok(addr, size) (__kernel_ok || __user_ok((addr), (size)))
|
||||||
#define access_ok(type, addr, size) __access_ok((unsigned long)(addr), (size))
|
#define access_ok(type, addr, size) __access_ok((unsigned long)(addr), (size))
|
||||||
|
|
||||||
|
#define user_addr_max() (uaccess_kernel() ? ~0UL : TASK_SIZE)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* These are the main single-value transfer routines. They
|
* These are the main single-value transfer routines. They
|
||||||
* automatically use the right size if we just have the right pointer
|
* automatically use the right size if we just have the right pointer
|
||||||
@ -277,6 +279,8 @@ clear_user(void *addr, unsigned long size)
|
|||||||
#define __clear_user __xtensa_clear_user
|
#define __clear_user __xtensa_clear_user
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef CONFIG_GENERIC_STRNCPY_FROM_USER
|
||||||
|
|
||||||
extern long __strncpy_user(char *, const char *, long);
|
extern long __strncpy_user(char *, const char *, long);
|
||||||
|
|
||||||
static inline long
|
static inline long
|
||||||
@ -286,6 +290,9 @@ strncpy_from_user(char *dst, const char *src, long count)
|
|||||||
return __strncpy_user(dst, src, count);
|
return __strncpy_user(dst, src, count);
|
||||||
return -EFAULT;
|
return -EFAULT;
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
long strncpy_from_user(char *dst, const char *src, long count);
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Return the size of a string (including the ending 0!)
|
* Return the size of a string (including the ending 0!)
|
||||||
|
@ -44,7 +44,9 @@ EXPORT_SYMBOL(memmove);
|
|||||||
EXPORT_SYMBOL(__memset);
|
EXPORT_SYMBOL(__memset);
|
||||||
EXPORT_SYMBOL(__memcpy);
|
EXPORT_SYMBOL(__memcpy);
|
||||||
EXPORT_SYMBOL(__memmove);
|
EXPORT_SYMBOL(__memmove);
|
||||||
|
#ifndef CONFIG_GENERIC_STRNCPY_FROM_USER
|
||||||
EXPORT_SYMBOL(__strncpy_user);
|
EXPORT_SYMBOL(__strncpy_user);
|
||||||
|
#endif
|
||||||
EXPORT_SYMBOL(clear_page);
|
EXPORT_SYMBOL(clear_page);
|
||||||
EXPORT_SYMBOL(copy_page);
|
EXPORT_SYMBOL(copy_page);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user