diff mbox series

loop: don't clear LO_FLAGS_PARTSCAN on LOOP_SET_STATUS{,64}

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

Commit Message

Christoph Hellwig Jan. 27, 2025, 2:30 p.m. UTC
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(-)

Comments

Jens Axboe Jan. 27, 2025, 4:06 p.m. UTC | #1
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 mbox series

Patch

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) {