Tetsuo Handa 3ce6e1f662 loop: reintroduce global lock for safe loop_validate_file() traversal
Commit 6cc8e7430801fa23 ("loop: scale loop device by introducing per
device lock") re-opened a race window for NULL pointer dereference at
loop_validate_file() where commit 310ca162d779efee ("block/loop: Use
global lock for ioctl() operation.") has closed.

Although we need to guarantee that other loop devices will not change
during traversal, we can't take remote "struct loop_device"->lo_mutex
inside loop_validate_file() in order to avoid AB-BA deadlock. Therefore,
introduce a global lock dedicated for loop_validate_file() which is
conditionally taken before local "struct loop_device"->lo_mutex is taken.

Signed-off-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
Fixes: 6cc8e7430801fa23 ("loop: scale loop device by introducing per device lock")
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2021-07-23 10:18:25 -06:00
..
2021-06-30 12:21:16 -07:00
2021-06-30 12:21:16 -07:00
2021-06-30 12:21:16 -07:00
2021-06-30 12:21:16 -07:00
2021-06-29 10:53:50 -07:00
2021-03-24 06:57:40 -06:00
2021-06-01 07:42:24 -06:00
2021-06-30 15:34:19 -06:00
2021-06-11 11:53:02 -06:00
2021-06-30 12:21:16 -07:00
2021-06-11 11:53:02 -06:00
2021-06-11 11:53:03 -06:00
2021-06-30 12:21:16 -07:00
2021-06-11 11:53:02 -06:00
2021-06-30 12:21:16 -07:00