Messages in this thread | | | Date | Wed, 29 Dec 2021 15:53:05 -0800 | From | Andrew Morton <> | Subject | Re: [PATCH 1/1] seccomp: release seccomp after killing terminate clone/fork |
| |
On Tue, 28 Dec 2021 13:34:21 +0800 Calvin Liao <calvin.liao@gmail.com> wrote:
> From: "calvin.liao" <calvin.liao@mediatek.com> > > Add to release seccomp after killing terminate clone/fork to avoid > memory leak when enabling CONFIG_SECCOMP. >
Help us out here - where was this filter allocated? Please describe the code flow which led to this leak. Rather than simply saying "there is a leak".
> --- a/kernel/fork.c > +++ b/kernel/fork.c > @@ -1698,6 +1698,13 @@ static void copy_seccomp(struct task_struct *p) > #endif > } > > +static void release_seccomp(struct task_struct *p) > +{ > +#ifdef CONFIG_SECCOMP > + seccomp_filter_release(p); > +#endif
ifdefs aren't needed?
> +} > + > SYSCALL_DEFINE1(set_tid_address, int __user *, tidptr) > { > current->clear_child_tid = tidptr; > @@ -2405,6 +2412,7 @@ static __latent_entropy struct task_struct *copy_process( > return p; > > bad_fork_cancel_cgroup: > + release_seccomp(p);
Why not simply call seccomp_filter_release() here, without ifdefs?
> sched_core_free(p); > spin_unlock(¤t->sighand->siglock); > write_unlock_irq(&tasklist_lock);
| |