From: Keke Ming <ming.jvle@gmail.com>
To: Masami Hiramatsu <mhiramat@kernel.org>,
Oleg Nesterov <oleg@redhat.com>,
Peter Zijlstra <peterz@infradead.org>
Cc: linux-kernel@vger.kernel.org, linux-trace-kernel@vger.kernel.org,
linux-perf-users@vger.kernel.org, Keke Ming <ming.jvle@gmail.com>
Subject: [PATCH v2] uprobes: Free utask on dup_return_instance() failure
Date: Sat, 22 Aug 2026 23:09:06 +0800 [thread overview]
Message-ID: <20260822150906.528208-1-ming.jvle@gmail.com> (raw)
In-Reply-To: <20260822054620.452262-1-ming.jvle@gmail.com>
dup_utask() installs the new uprobe_task in t->utask before copying
return_instances. If dup_return_instance() fails, the partially copied
utask is left attached to the child task.
Free the partially copied utask before returning -ENOMEM.
Also, dup_return_instance() copies the return_instance before fixing
up extra_consumers.
Here, if no deep copy is needed, clear the copied extra_consumers
pointer.
Signed-off-by: Keke Ming <ming.jvle@gmail.com>
---
v2 changes:
- Clear ri->extra_consumers = NULL when old->cons_cnt <= 1 in
dup_return_instance(), fixing a potential double free during
cleanup.
- Keep the dup_utask() error cleanup from v1.
kernel/events/uprobes.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/kernel/events/uprobes.c b/kernel/events/uprobes.c
index b25531331902..73a6620c5701 100644
--- a/kernel/events/uprobes.c
+++ b/kernel/events/uprobes.c
@@ -2118,6 +2118,8 @@ static struct return_instance *dup_return_instance(struct return_instance *old)
kfree(ri);
return NULL;
}
+ } else {
+ ri->extra_consumers = NULL;
}
return ri;
@@ -2140,8 +2142,10 @@ static int dup_utask(struct task_struct *t, struct uprobe_task *o_utask)
p = &n_utask->return_instances;
for (o = o_utask->return_instances; o; o = o->next) {
n = dup_return_instance(o);
- if (!n)
+ if (!n) {
+ uprobe_free_utask(t);
return -ENOMEM;
+ }
/* if uprobe is non-NULL, we'll have an extra refcount for uprobe */
uprobe = hprobe_expire(&o->hprobe, true);
--
2.43.0
next prev parent reply other threads:[~2026-08-22 15:09 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-22 5:46 [PATCH] uprobes: Free utask on dup_return_instance() failure Keke Ming
2026-08-22 6:00 ` sashiko-bot
2026-08-23 12:02 ` Masami Hiramatsu
2026-08-23 13:00 ` Keke Ming
2026-08-22 15:09 ` Keke Ming [this message]
2026-08-22 15:16 ` [PATCH v2] " sashiko-bot
2026-08-23 15:38 ` [PATCH] " Oleg Nesterov
2026-08-23 16:26 ` Keke Ming
2026-08-23 19:41 ` Oleg Nesterov
2026-08-24 11:22 ` Keke Ming
2026-08-24 15:57 ` Oleg Nesterov
2026-08-24 19:54 ` Andrii Nakryiko
2026-08-25 12:26 ` Oleg Nesterov
2026-08-25 16:38 ` Andrii Nakryiko
2026-08-25 18:23 ` SIGILL and uretprobes, WAS: " Andrii Nakryiko
2026-08-26 11:49 ` Oleg Nesterov
2026-08-27 16:44 ` Andrii Nakryiko
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260822150906.528208-1-ming.jvle@gmail.com \
--to=ming.jvle@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-perf-users@vger.kernel.org \
--cc=linux-trace-kernel@vger.kernel.org \
--cc=mhiramat@kernel.org \
--cc=oleg@redhat.com \
--cc=peterz@infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.