Messages in this thread | | | Date | Mon, 30 Nov 2020 16:18:50 -0500 | From | Steven Rostedt <> | Subject | Re: [PATCH] kretprobe: avoid re-registration of the same kretprobe earlier |
| |
Masami,
Can you review this patch, and also, should this go to -rc and stable?
-- Steve
On Tue, 24 Nov 2020 19:57:19 +0800 Wang ShaoBo <bobo.shaobowang@huawei.com> wrote:
> Our system encountered a re-init error when re-registering same kretprobe, > where the kretprobe_instance in rp->free_instances is illegally accessed > after re-init. > > Implementation to avoid re-registration has been introduced for kprobe > before, but lags for register_kretprobe(). We must check if kprobe has > been re-registered before re-initializing kretprobe, otherwise it will > destroy the data struct of kretprobe registered, which can lead to memory > leak, system crash, also some unexpected behaviors. > > we use check_kprobe_rereg() to check if kprobe has been re-registered > before calling register_kretprobe(), for giving a warning message and > terminate registration process. > > Signed-off-by: Wang ShaoBo <bobo.shaobowang@huawei.com> > Signed-off-by: Cheng Jian <cj.chengjian@huawei.com> > --- > kernel/kprobes.c | 8 ++++++++ > 1 file changed, 8 insertions(+) > > diff --git a/kernel/kprobes.c b/kernel/kprobes.c > index 41fdbb7953c6..7f54a70136f3 100644 > --- a/kernel/kprobes.c > +++ b/kernel/kprobes.c > @@ -2117,6 +2117,14 @@ int register_kretprobe(struct kretprobe *rp) > } > } > > + /* > + * Return error if it's being re-registered, > + * also give a warning message to the developer. > + */ > + ret = check_kprobe_rereg(&rp->kp); > + if (WARN_ON(ret)) > + return ret; > + > rp->kp.pre_handler = pre_handler_kretprobe; > rp->kp.post_handler = NULL; > rp->kp.fault_handler = NULL;
| |