Warning: That file was not part of the compilation database. It may have many parsing errors.
1 | /* SPDX-License-Identifier: GPL-2.0 */ |
---|---|
2 | #ifndef _ASM_X86_UACCESS_32_H |
3 | #define _ASM_X86_UACCESS_32_H |
4 | |
5 | /* |
6 | * User space memory access functions |
7 | */ |
8 | #include <linux/string.h> |
9 | #include <asm/asm.h> |
10 | #include <asm/page.h> |
11 | |
12 | unsigned long __must_check __copy_user_ll |
13 | (void *to, const void *from, unsigned long n); |
14 | unsigned long __must_check __copy_from_user_ll_nocache_nozero |
15 | (void *to, const void __user *from, unsigned long n); |
16 | |
17 | static __always_inline unsigned long __must_check |
18 | raw_copy_to_user(void __user *to, const void *from, unsigned long n) |
19 | { |
20 | return __copy_user_ll((__force void *)to, from, n); |
21 | } |
22 | |
23 | static __always_inline unsigned long |
24 | raw_copy_from_user(void *to, const void __user *from, unsigned long n) |
25 | { |
26 | if (__builtin_constant_p(n)) { |
27 | unsigned long ret; |
28 | |
29 | switch (n) { |
30 | case 1: |
31 | ret = 0; |
32 | __uaccess_begin_nospec(); |
33 | __get_user_asm_nozero(*(u8 *)to, from, ret, |
34 | "b", "b", "=q", 1); |
35 | __uaccess_end(); |
36 | return ret; |
37 | case 2: |
38 | ret = 0; |
39 | __uaccess_begin_nospec(); |
40 | __get_user_asm_nozero(*(u16 *)to, from, ret, |
41 | "w", "w", "=r", 2); |
42 | __uaccess_end(); |
43 | return ret; |
44 | case 4: |
45 | ret = 0; |
46 | __uaccess_begin_nospec(); |
47 | __get_user_asm_nozero(*(u32 *)to, from, ret, |
48 | "l", "k", "=r", 4); |
49 | __uaccess_end(); |
50 | return ret; |
51 | } |
52 | } |
53 | return __copy_user_ll(to, (__force const void *)from, n); |
54 | } |
55 | |
56 | static __always_inline unsigned long |
57 | __copy_from_user_inatomic_nocache(void *to, const void __user *from, |
58 | unsigned long n) |
59 | { |
60 | return __copy_from_user_ll_nocache_nozero(to, from, n); |
61 | } |
62 | |
63 | #endif /* _ASM_X86_UACCESS_32_H */ |
64 |
Warning: That file was not part of the compilation database. It may have many parsing errors.