]> git.ipfire.org Git - thirdparty/kernel/stable.git/commit
md: protect md_unregister_thread from reentrancy
authorGuoqing Jiang <guoqing.jiang@cloud.ionos.com>
Fri, 29 Apr 2022 08:49:09 +0000 (16:49 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 14 Jun 2022 16:12:00 +0000 (18:12 +0200)
commitcf6b9316879f19c99b4a4db50b138d27e83b8dca
tree52a922f4ac0e37213bf3ca65df78d468bdd9004c
parent99e4c67a5581af17b8741dbad0363eb0f3649fb2
md: protect md_unregister_thread from reentrancy

[ Upstream commit 1e267742283a4b5a8ca65755c44166be27e9aa0f ]

Generally, the md_unregister_thread is called with reconfig_mutex, but
raid_message in dm-raid doesn't hold reconfig_mutex to unregister thread,
so md_unregister_thread can be called simulitaneously from two call sites
in theory.

Then after previous commit which remove the protection of reconfig_mutex
for md_unregister_thread completely, the potential issue could be worse
than before.

Let's take pers_lock at the beginning of function to ensure reentrancy.

Reported-by: Donald Buczek <buczek@molgen.mpg.de>
Signed-off-by: Guoqing Jiang <guoqing.jiang@linux.dev>
Signed-off-by: Song Liu <song@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/md/md.c