asm-generic: add nommu implementations of __{get,put}_kernel_nofault
Add native implementations of __{get,put}_kernel_nofault using {get,put}_unaligned, just like the {get,put}_user implementations. Signed-off-by: Christoph Hellwig <hch@lst.de> Acked-by: Arnd Bergmann <arnd@arndb.de> Signed-off-by: Palmer Dabbelt <palmerdabbelt@google.com>
This commit is contained in:

committed by
Palmer Dabbelt

parent
931de11f5a
commit
2d2d255467
@@ -61,6 +61,22 @@ static inline int __put_user_fn(size_t size, void __user *to, void *from)
|
|||||||
}
|
}
|
||||||
#define __put_user_fn(sz, u, k) __put_user_fn(sz, u, k)
|
#define __put_user_fn(sz, u, k) __put_user_fn(sz, u, k)
|
||||||
|
|
||||||
|
#define __get_kernel_nofault(dst, src, type, err_label) \
|
||||||
|
do { \
|
||||||
|
*((type *)dst) = get_unaligned((type *)(src)); \
|
||||||
|
if (0) /* make sure the label looks used to the compiler */ \
|
||||||
|
goto err_label; \
|
||||||
|
} while (0)
|
||||||
|
|
||||||
|
#define __put_kernel_nofault(dst, src, type, err_label) \
|
||||||
|
do { \
|
||||||
|
put_unaligned(*((type *)src), (type *)(dst)); \
|
||||||
|
if (0) /* make sure the label looks used to the compiler */ \
|
||||||
|
goto err_label; \
|
||||||
|
} while (0)
|
||||||
|
|
||||||
|
#define HAVE_GET_KERNEL_NOFAULT 1
|
||||||
|
|
||||||
static inline __must_check unsigned long
|
static inline __must_check unsigned long
|
||||||
raw_copy_from_user(void *to, const void __user * from, unsigned long n)
|
raw_copy_from_user(void *to, const void __user * from, unsigned long n)
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user