diff options
| author | Abd-Alrhman Masalkhi <abd.masalkhi@gmail.com> | 2026-05-01 13:46:49 +0200 |
|---|---|---|
| committer | Yu Kuai <yukuai@fygo.io> | 2026-05-31 19:09:18 +0800 |
| commit | 7b15c24f805339a585cfe7d72f446b7e88b9bcc0 (patch) | |
| tree | 9541aba02b518b38724075bb5d1bd884d9043457 /include/linux/timerqueue_types.h | |
| parent | 6b8a26af065ddc93de2aa5c9f0df98dce9723442 (diff) | |
md/raid1,raid10: fix deadlock in read error recovery path
raid1d and raid10d may resubmit a split md cloned bio while handling
a read error. In this case, resubmitting the bio can lead to a deadlock
if the array is suspended before md_handle_request() acquires an
active_io reference via percpu_ref_tryget_live().
Since the cloned bio already holds an active_io reference,
trying to acquire another reference via percpu_ref_tryget_live()
can lead to a deadlock while the array is suspended.
Fix this by using percpu_ref_get() for md cloned bios.
Fixes: bb2a9acefaf9 ("md/raid1: switch to use md_account_bio() for io accounting")
Fixes: 820455238366 ("md/raid10: switch to use md_account_bio() for io accounting")
Signed-off-by: Abd-Alrhman Masalkhi <abd.masalkhi@gmail.com>
Reviewed-by: Xiao Ni <xiao@kernel.org>
Reviewed-by: Yu Kuai <yukuai@fygo.io>
Link: https://patch.msgid.link/20260501114652.590037-2-abd.masalkhi@gmail.com
Signed-off-by: Yu Kuai <yukuai@fygo.io>
Diffstat (limited to 'include/linux/timerqueue_types.h')
0 files changed, 0 insertions, 0 deletions
