Commit 6144a85a0e018c19bc4b24f7eb6c1f3f7431813d

Authored by Jason Wessel
1 parent 2c1f1895ef

maccess,probe_kernel: Allow arch specific override probe_kernel_(read|write)

Some archs such as blackfin, would like to have an arch specific
probe_kernel_read() and probe_kernel_write() implementation which can
fall back to the generic implementation if no special operations are
needed.

CC: Thomas Gleixner <tglx@linutronix.de>
CC: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Jason Wessel <jason.wessel@windriver.com>
Signed-off-by: Mike Frysinger <vapier@gentoo.org>

Showing 2 changed files with 12 additions and 3 deletions Side-by-side Diff

include/linux/uaccess.h
... ... @@ -94,6 +94,7 @@
94 94 * happens, handle that and return -EFAULT.
95 95 */
96 96 extern long probe_kernel_read(void *dst, void *src, size_t size);
  97 +extern long __probe_kernel_read(void *dst, void *src, size_t size);
97 98  
98 99 /*
99 100 * probe_kernel_write(): safely attempt to write to a location
... ... @@ -104,7 +105,8 @@
104 105 * Safely write to address @dst from the buffer at @src. If a kernel fault
105 106 * happens, handle that and return -EFAULT.
106 107 */
107   -extern long probe_kernel_write(void *dst, void *src, size_t size);
  108 +extern long notrace probe_kernel_write(void *dst, void *src, size_t size);
  109 +extern long notrace __probe_kernel_write(void *dst, void *src, size_t size);
108 110  
109 111 #endif /* __LINUX_UACCESS_H__ */
... ... @@ -14,7 +14,11 @@
14 14 * Safely read from address @src to the buffer at @dst. If a kernel fault
15 15 * happens, handle that and return -EFAULT.
16 16 */
17   -long probe_kernel_read(void *dst, void *src, size_t size)
  17 +
  18 +long __weak probe_kernel_read(void *dst, void *src, size_t size)
  19 + __attribute__((alias("__probe_kernel_read")));
  20 +
  21 +long __probe_kernel_read(void *dst, void *src, size_t size)
18 22 {
19 23 long ret;
20 24 mm_segment_t old_fs = get_fs();
... ... @@ -39,7 +43,10 @@
39 43 * Safely write to address @dst from the buffer at @src. If a kernel fault
40 44 * happens, handle that and return -EFAULT.
41 45 */
42   -long notrace __weak probe_kernel_write(void *dst, void *src, size_t size)
  46 +long __weak probe_kernel_write(void *dst, void *src, size_t size)
  47 + __attribute__((alias("__probe_kernel_write")));
  48 +
  49 +long __probe_kernel_write(void *dst, void *src, size_t size)
43 50 {
44 51 long ret;
45 52 mm_segment_t old_fs = get_fs();