From 716b21cc4af3d012308b2bf6cbb83fd25c7ea53b Mon Sep 17 00:00:00 2001 From: Alexander Aksenov Date: Fri, 25 Nov 2016 19:02:42 +0300 Subject: [PATCH] Uprobe: fix NULL dereference on x86 When uprobe_handler_part2() is called, it dereferences pre_handler callback without any check, but uprobe_handler_part2() is called itself from uprobe_handler_atomic() when pre_handler is NULL. Change-Id: Ia4cdbdc20c50aa3d891c790eea3545da06506f47 Signed-off-by: Alexander Aksenov --- uprobe/arch/x86/swap-asm/swap_uprobes.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/uprobe/arch/x86/swap-asm/swap_uprobes.c b/uprobe/arch/x86/swap-asm/swap_uprobes.c index 99308bc..28de890 100644 --- a/uprobe/arch/x86/swap-asm/swap_uprobes.c +++ b/uprobe/arch/x86/swap-asm/swap_uprobes.c @@ -549,7 +549,7 @@ static int uprobe_handler_retprobe(struct uprobe *p, struct pt_regs *regs) static int uprobe_handler_part2(struct uprobe *p, struct pt_regs *regs) { - if (!p->pre_handler(p, regs)) { + if (p->pre_handler && !p->pre_handler(p, regs)) { prepare_tramp(p, regs); if (p->ainsn.boostable == 1 && !p->post_handler) goto exit_and_put_up; -- 2.7.4