mirror of
https://github.com/torvalds/linux.git
synced 2024-11-25 21:51:40 +00:00
kprobes: Fix KRETPROBES when CONFIG_KRETPROBE_ON_RETHOOK is set
The recent kernel change in73f9b911fa
("kprobes: Use rethook for kretprobe if possible"), introduced a potential NULL pointer dereference bug in the KRETPROBE mechanism. The official Kprobes documentation defines that "Any or all handlers can be NULL". Unfortunately, there is a missing return handler verification to fulfill these requirements and can result in a NULL pointer dereference bug. This patch adds such verification in kretprobe_rethook_handler() function. Fixes:73f9b911fa
("kprobes: Use rethook for kretprobe if possible") Signed-off-by: Adam Zabrocki <pi3@pi3.com.pl> Signed-off-by: Daniel Borkmann <daniel@iogearbox.net> Acked-by: Masami Hiramatsu <mhiramat@kernel.org> Cc: Steven Rostedt <rostedt@goodmis.org> Cc: Naveen N. Rao <naveen.n.rao@linux.ibm.com> Cc: Anil S. Keshavamurthy <anil.s.keshavamurthy@intel.com> Link: https://lore.kernel.org/bpf/20220422164027.GA7862@pi3.com.pl
This commit is contained in:
parent
b02d196c44
commit
1d661ed54d
@ -2126,7 +2126,7 @@ static void kretprobe_rethook_handler(struct rethook_node *rh, void *data,
|
|||||||
struct kprobe_ctlblk *kcb;
|
struct kprobe_ctlblk *kcb;
|
||||||
|
|
||||||
/* The data must NOT be null. This means rethook data structure is broken. */
|
/* The data must NOT be null. This means rethook data structure is broken. */
|
||||||
if (WARN_ON_ONCE(!data))
|
if (WARN_ON_ONCE(!data) || !rp->handler)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
__this_cpu_write(current_kprobe, &rp->kp);
|
__this_cpu_write(current_kprobe, &rp->kp);
|
||||||
|
Loading…
Reference in New Issue
Block a user