md/raid10: fix null-ptr-deref of mreplace in raid10_sync_request
authorLi Nan <linan122@huawei.com>
Sat, 27 May 2023 07:22:15 +0000 (15:22 +0800)
committerSong Liu <song@kernel.org>
Tue, 13 Jun 2023 22:25:42 +0000 (15:25 -0700)
commit34817a2441747b48e444cb0e05d84e14bc9443da
treef9ee850efe08a10b3717e6cddd41adfb5d7587f4
parent75aa7a1b8f85b03971df1d0f5b1a3a9edf020dff
md/raid10: fix null-ptr-deref of mreplace in raid10_sync_request

There are two check of 'mreplace' in raid10_sync_request(). In the first
check, 'need_replace' will be set and 'mreplace' will be used later if
no-Faulty 'mreplace' exists, In the second check, 'mreplace' will be
set to NULL if it is Faulty, but 'need_replace' will not be changed
accordingly. null-ptr-deref occurs if Faulty is set between two check.

Fix it by merging two checks into one. And replace 'need_replace' with
'mreplace' because their values are always the same.

Fixes: ee37d7314a32 ("md/raid10: Fix raid10 replace hang when new added disk faulty")
Signed-off-by: Li Nan <linan122@huawei.com>
Reviewed-by: Yu Kuai <yukuai3@huawei.com>
Signed-off-by: Song Liu <song@kernel.org>
Link: https://lore.kernel.org/r/20230527072218.2365857-2-linan666@huaweicloud.com
drivers/md/raid10.c