Re: [PATCH 3/3] fs/file.c: move sanity_check from alloc_fd() to put_unused_fd()

From: Michal Hocko
Date: Tue Jun 18 2024 - 06:37:36 EST


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