kprobes/x86: Use copy_from_kernel_nofault() to read from unsafe address
authorMasami Hiramatsu (Google) <mhiramat@kernel.org>
Thu, 14 Mar 2024 15:17:30 +0000 (00:17 +0900)
committerIngo Molnar <mingo@kernel.org>
Fri, 22 Mar 2024 10:40:56 +0000 (11:40 +0100)
commit4e51653d5d871f40f1bd5cf95cc7f2d8b33d063b
tree4b75c36977acabb1b31101b3f58c47f6248235e8
parente3f269ed0accbb22aa8f25d2daffa23c3fccd407
kprobes/x86: Use copy_from_kernel_nofault() to read from unsafe address

Read from an unsafe address with copy_from_kernel_nofault() in
arch_adjust_kprobe_addr() because this function is used before checking
the address is in text or not. Syzcaller bot found a bug and reported
the case if user specifies inaccessible data area,
arch_adjust_kprobe_addr() will cause a kernel panic.

[ mingo: Clarified the comment. ]

Fixes: cc66bb914578 ("x86/ibt,kprobes: Cure sym+0 equals fentry woes")
Reported-by: Qiang Zhang <zzqq0103.hey@gmail.com>
Tested-by: Jinghao Jia <jinghao7@illinois.edu>
Signed-off-by: Masami Hiramatsu (Google) <mhiramat@kernel.org>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Link: https://lore.kernel.org/r/171042945004.154897.2221804961882915806.stgit@devnote2
arch/x86/kernel/kprobes/core.c