maccess: unify the probe kernel arch hooks
Currently architectures have to override every routine that probes kernel memory, which includes a pure read and strcpy, both in strict and not strict variants. Just provide a single arch hooks instead to make sure all architectures cover all the cases. [akpm@linux-foundation.org: fix !CONFIG_X86_64 build] Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Cc: Alexei Starovoitov <ast@kernel.org> Cc: Daniel Borkmann <daniel@iogearbox.net> Cc: "H. Peter Anvin" <hpa@zytor.com> Cc: Ingo Molnar <mingo@elte.hu> Cc: Masami Hiramatsu <mhiramat@kernel.org> Cc: Thomas Gleixner <tglx@linutronix.de> Link: http://lkml.kernel.org/r/20200521152301.2587579-11-hch@lst.de Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:

committed by
Linus Torvalds

parent
cd0309058f
commit
eab0c6089b
@@ -301,9 +301,11 @@ copy_struct_from_user(void *dst, size_t ksize, const void __user *src,
|
||||
return 0;
|
||||
}
|
||||
|
||||
bool probe_kernel_read_allowed(const void *unsafe_src, size_t size,
|
||||
bool strict);
|
||||
|
||||
extern long probe_kernel_read(void *dst, const void *src, size_t size);
|
||||
extern long probe_kernel_read_strict(void *dst, const void *src, size_t size);
|
||||
extern long __probe_kernel_read(void *dst, const void *src, size_t size);
|
||||
extern long probe_user_read(void *dst, const void __user *src, size_t size);
|
||||
|
||||
extern long notrace probe_kernel_write(void *dst, const void *src, size_t size);
|
||||
@@ -312,7 +314,7 @@ extern long notrace probe_user_write(void __user *dst, const void *src, size_t s
|
||||
extern long strncpy_from_unsafe(char *dst, const void *unsafe_addr, long count);
|
||||
long strncpy_from_kernel_nofault(char *dst, const void *unsafe_addr,
|
||||
long count);
|
||||
extern long __strncpy_from_unsafe(char *dst, const void *unsafe_addr, long count);
|
||||
|
||||
long strncpy_from_user_nofault(char *dst, const void __user *unsafe_addr,
|
||||
long count);
|
||||
long strnlen_user_nofault(const void __user *unsafe_addr, long count);
|
||||
|
Reference in New Issue
Block a user