On Mon 17-06-24 11:04:41, Tim Chen wrote: > diff --git a/kernel/sys.c b/kernel/sys.c > index 3a2df1bd9f64..b4e523728c3e 100644 > --- a/kernel/sys.c > +++ b/kernel/sys.c > @@ -1471,6 +1471,7 @@ static int do_prlimit(struct task_struct *tsk, unsigned int resource, > return -EINVAL; > resource = array_index_nospec(resource, RLIM_NLIMITS); > > + task_lock(tsk->group_leader); > if (new_rlim) { > if (new_rlim->rlim_cur > new_rlim->rlim_max) > return -EINVAL; This is clearly broken as it leaves the lock behind on the error, no? -- Michal Hocko SUSE Labs