[PATCH v1 2/2] block: loop: restore state on loop_configure() error

From: Iván Ezequiel Rodriguez

Date: Mon Aug 31 2026 - 15:43:36 EST


On failure after loop_assign_backing_file(), restore the backing
file GFP mask, clear lo_backing_file/lo_device, and re-enable uevents
before unlocking and dropping the file reference.

Signed-off-by: Iván Ezequiel Rodriguez <ivanrwcm25@xxxxxxxxx>
---
drivers/block/loop.c | 7 +++++++
1 file changed, 7 insertions(+)

diff --git a/drivers/block/loop.c b/drivers/block/loop.c
index 6f12976035b0..838554bd980e 100644
--- a/drivers/block/loop.c
+++ b/drivers/block/loop.c
@@ -1123,6 +1123,13 @@ static int loop_configure(struct loop_device *lo, blk_mode_t mode,
return 0;

out_unlock:
+ if (lo->lo_backing_file) {
+ mapping_set_gfp_mask(lo->lo_backing_file->f_mapping,
+ lo->old_gfp_mask);
+ lo->lo_backing_file = NULL;
+ lo->lo_device = NULL;
+ }
+ dev_set_uevent_suppress(disk_to_dev(lo->lo_disk), 0);
loop_global_unlock(lo, is_loop);
out_bdev:
if (!(mode & BLK_OPEN_EXCL))
--
2.43.0