mirror of
https://github.com/torvalds/linux.git
synced 2025-12-01 07:26:02 +07:00
futex: Use correct exit on failure from futex_hash_allocate_default()
copy_process() uses the wrong error exit path from futex_hash_allocate_default().
After exiting from futex_hash_allocate_default(), neither tasklist_lock
nor siglock has been acquired. The exit label bad_fork_core_free unlocks
both of these locks which is wrong.
The next exit label, bad_fork_cancel_cgroup, is the correct exit.
sched_cgroup_fork() did not allocate any resources that need to freed.
Use bad_fork_cancel_cgroup on error exit from futex_hash_allocate_default().
Fixes: 7c4f75a21f ("futex: Allow automatic allocation of process wide futex hash")
Reported-by: syzbot+80cb3cc5c14fad191a10@syzkaller.appspotmail.com
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Reviewed-by: Steven Rostedt (Google) <rostedt@goodmis.org>
Closes: https://lore.kernel.org/all/68cb1cbd.050a0220.2ff435.0599.GAE@google.com
This commit is contained in:
committed by
Thomas Gleixner
parent
b549113738
commit
4ec3c15462
@@ -2295,7 +2295,7 @@ __latent_entropy struct task_struct *copy_process(
|
||||
if (need_futex_hash_allocate_default(clone_flags)) {
|
||||
retval = futex_hash_allocate_default();
|
||||
if (retval)
|
||||
goto bad_fork_core_free;
|
||||
goto bad_fork_cancel_cgroup;
|
||||
/*
|
||||
* If we fail beyond this point we don't free the allocated
|
||||
* futex hash map. We assume that another thread will be created
|
||||
|
||||
Reference in New Issue
Block a user