loop: don't clear LO_FLAGS_PARTSCAN on LOOP_SET_STATUS{,64}
LOOP_SET_STATUS{,64} can set a lot more flags than it is supposed to
clear (the LOOP_SET_STATUS_CLEARABLE_FLAGS vs
LOOP_SET_STATUS_SETTABLE_FLAGS defines should have been a hint..).
Fix this by only clearing the bits in LOOP_SET_STATUS_CLEARABLE_FLAGS.
Fixes: ae074d07a0
("loop: move updating lo_flag s out of loop_set_status_from_info")
Reported-by: kernel test robot <oliver.sang@intel.com>
Signed-off-by: Christoph Hellwig <hch@lst.de>
Link: https://lore.kernel.org/r/20250127143045.538279-1-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
parent
e9d8c87396
commit
5aa21b0495
1 changed files with 1 additions and 2 deletions
|
@ -1281,8 +1281,7 @@ loop_set_status(struct loop_device *lo, const struct loop_info64 *info)
|
|||
partscan = !(lo->lo_flags & LO_FLAGS_PARTSCAN) &&
|
||||
(info->lo_flags & LO_FLAGS_PARTSCAN);
|
||||
|
||||
lo->lo_flags &= ~(LOOP_SET_STATUS_SETTABLE_FLAGS |
|
||||
LOOP_SET_STATUS_CLEARABLE_FLAGS);
|
||||
lo->lo_flags &= ~LOOP_SET_STATUS_CLEARABLE_FLAGS;
|
||||
lo->lo_flags |= (info->lo_flags & LOOP_SET_STATUS_SETTABLE_FLAGS);
|
||||
|
||||
if (size_changed) {
|
||||
|
|
Loading…
Add table
Reference in a new issue