md/dm-raid: don't call md_reap_sync_thread() directly
authorYu Kuai <yukuai3@huawei.com>
Tue, 5 Mar 2024 07:23:03 +0000 (15:23 +0800)
committerSong Liu <song@kernel.org>
Tue, 5 Mar 2024 20:53:32 +0000 (12:53 -0800)
commitcd32b27a66db8776d8b8e82ec7d7dde97a8693b0
treefb7a2e1c4751b4243555297aa7e20417c1314616
parent16c4770c75b1223998adbeb7286f9a15c65fba73
md/dm-raid: don't call md_reap_sync_thread() directly

Currently md_reap_sync_thread() is called from raid_message() directly
without holding 'reconfig_mutex', this is definitely unsafe because
md_reap_sync_thread() can change many fields that is protected by
'reconfig_mutex'.

However, hold 'reconfig_mutex' here is still problematic because this
will cause deadlock, for example, commit 130443d60b1b ("md: refactor
idle/frozen_sync_thread() to fix deadlock").

Fix this problem by using stop_sync_thread() to unregister sync_thread,
like md/raid did.

Fixes: be83651f0050 ("DM RAID: Add message/status support for changing sync action")
Cc: stable@vger.kernel.org # v6.7+
Signed-off-by: Yu Kuai <yukuai3@huawei.com>
Signed-off-by: Xiao Ni <xni@redhat.com>
Acked-by: Mike Snitzer <snitzer@kernel.org>
Signed-off-by: Song Liu <song@kernel.org>
Link: https://lore.kernel.org/r/20240305072306.2562024-7-yukuai1@huaweicloud.com
drivers/md/dm-raid.c