summaryrefslogtreecommitdiffstats
path: root/lib/reed_solomon
diff options
context:
space:
mode:
authorOGAWA Hirofumi <hirofumi@mail.parknet.co.jp>2024-11-19 15:42:23 +0100
committerJens Axboe <axboe@kernel.dk>2024-11-19 15:54:56 +0100
commitb49125574cae26458d4aa02ce8f4523ba9a2a328 (patch)
treed644563dcc3cccb307b52a848c2e26374cb56518 /lib/reed_solomon
parentblock: return unsigned int from bdev_io_min (diff)
downloadlinux-b49125574cae26458d4aa02ce8f4523ba9a2a328.tar.xz
linux-b49125574cae26458d4aa02ce8f4523ba9a2a328.zip
loop: Fix ABBA locking race
Current loop calls vfs_statfs() while holding the q->limits_lock. If FS takes some locking in vfs_statfs callback, this may lead to ABBA locking bug (at least, FAT fs has this issue actually). So this patch calls vfs_statfs() outside q->limits_locks instead, because looks like no reason to hold q->limits_locks while getting discord configs. Chain exists of: &sbi->fat_lock --> &q->q_usage_counter(io)#17 --> &q->limits_lock Possible unsafe locking scenario: CPU0 CPU1 ---- ---- lock(&q->limits_lock); lock(&q->q_usage_counter(io)#17); lock(&q->limits_lock); lock(&sbi->fat_lock); *** DEADLOCK *** Reported-by: syzbot+a5d8c609c02f508672cc@syzkaller.appspotmail.com Closes: https://syzkaller.appspot.com/bug?extid=a5d8c609c02f508672cc Reviewed-by: Ming Lei <ming.lei@redhat.com> Signed-off-by: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp> Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'lib/reed_solomon')
0 files changed, 0 insertions, 0 deletions