brintos

brintos / linux-shallow public Read only

0
0
Text · 933 B · f13828e Raw
46 lines · c
1/* SPDX-License-Identifier: GPL-2.0 */2#ifndef UACCESS_H3#define UACCESS_H4 5#include <linux/compiler.h>6 7extern void *__user_addr_min, *__user_addr_max;8 9#define put_user(x, ptr)					\10({								\11	typeof(ptr) __pu_ptr = (ptr);				\12	__chk_user_ptr(__pu_ptr);				\13	WRITE_ONCE(*(__pu_ptr), x);				\14	0;							\15})16 17#define get_user(x, ptr)					\18({								\19	typeof(ptr) __pu_ptr = (ptr);				\20	__chk_user_ptr(__pu_ptr);				\21	x = READ_ONCE(*(__pu_ptr));				\22	0;							\23})24 25static void volatile_memcpy(volatile char *to, const volatile char *from, 26			    unsigned long n)27{28	while (n--)29		*(to++) = *(from++);30}31 32static inline int copy_from_user(void *to, const void __user volatile *from,33				 unsigned long n)34{35	volatile_memcpy(to, from, n);36	return 0;37}38 39static inline int copy_to_user(void __user volatile *to, const void *from,40			       unsigned long n)41{42	volatile_memcpy(to, from, n);43	return 0;44}45#endif /* UACCESS_H */46