Re: [PATCH] uprobes: Free utask on dup_return_instance() failure
From: Oleg Nesterov
Date: Sun Aug 23 2026 - 15:45:23 EST
On 08/24, Keke Ming wrote:
>
> > Note that uprobe_copy_process() warns but returns "void", too late
> > to abort copy_process().
>
> You are right that freeing the partial utask is not enough.
Hmm. It is not that I think "it is not enough", I think this is pointless
whatever we do. Please see below.
But you know what? I am afraid I am totally confused again, this happens
more and more often. So please correct me.
> Would it make sense to keep the cleanup
But again, why do you think it makes any sense to keep the cleanup
you propose?
> and additionally send
> SIGKILL to the new child when the uprobe state copy fails?
Or SIGILL like the rest of uprobes.c does...
Yes, this is what I meant. But this is only the first step to cleanup
this logic. I'll try to write another email tomorrow.
Lets suppose we change uprobe_copy_process() to kill the child. Then
why do we need to call uprobe_free_utask() in dup_utask() or do anything
else in copy_process() paths?
The child won't return to userspace, it will exit and call uprobe_free_utask()
itself.
> Also, should the existing "dup xol area" failure path be handled
> the same way?
Yes sure. But perhaps needs another discussion.
Oleg.