Message ID | 20250127143045.538279-1-hch@lst.de (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | loop: don't clear LO_FLAGS_PARTSCAN on LOOP_SET_STATUS{,64} | expand |
On Mon, 27 Jan 2025 15:30:44 +0100, Christoph Hellwig wrote: > 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. > > > [...] Applied, thanks! [1/1] loop: don't clear LO_FLAGS_PARTSCAN on LOOP_SET_STATUS{,64} commit: 5aa21b0495df1fac6d39f45011c1572bb431c44c Best regards,
diff --git a/drivers/block/loop.c b/drivers/block/loop.c index 1ec7417c7f00..d1f1d6bef2e6 100644 --- a/drivers/block/loop.c +++ b/drivers/block/loop.c @@ -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) {
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: ae074d07a0e5 ("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> --- drivers/block/loop.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-)