diff --git a/kernel/kprobes.c b/kernel/kprobes.c index 182fc95feb72de28a91a1b48a74bee279e938e43..a6b658b5b7aee7d40f0bdcefe20eb827224cbc69 100644 --- a/kernel/kprobes.c +++ b/kernel/kprobes.c @@ -1948,6 +1948,10 @@ int register_kretprobe(struct kretprobe *rp) if (!kprobe_on_func_entry(rp->kp.addr, rp->kp.symbol_name, rp->kp.offset)) return -EINVAL; + /* If only rp->kp.addr is specified, check reregistering kprobes */ + if (rp->kp.addr && check_kprobe_rereg(&rp->kp)) + return -EINVAL; + if (kretprobe_blacklist_size) { addr = kprobe_addr(&rp->kp); if (IS_ERR(addr))