Skip to content

Commit

Permalink
generic: 5.15: fix FIT partition parser on block partitions
Browse files Browse the repository at this point in the history
Using set_disk_ro() doesn't have the desired effect and instead of
just setting the single partition to be read-only it affects the
whole disk. Use the bd_read_only flag in struct block_device instead
to mark a partition being read-only.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
  • Loading branch information
dangowrt committed Mar 29, 2022
1 parent 1c7e146 commit 506ddce
Showing 1 changed file with 13 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -74,16 +74,25 @@
#ifdef CONFIG_SGI_PARTITION
sgi_partition,
#endif
@@ -598,6 +605,14 @@ static bool blk_add_partition(struct gen
@@ -408,6 +415,11 @@ static struct block_device *add_partitio
goto out_del;
}

+#ifdef CONFIG_FIT_PARTITION
+ if (flags & ADDPART_FLAG_READONLY)
+ bdev->bd_read_only = true;
+#endif
+
/* everything is up and running, commence */
err = xa_insert(&disk->part_tbl, partno, bdev, GFP_KERNEL);
if (err)
@@ -598,6 +610,11 @@ static bool blk_add_partition(struct gen
(state->parts[p].flags & ADDPART_FLAG_RAID))
md_autodetect_dev(part->bd_dev);

+#ifdef CONFIG_FIT_PARTITION
+ if ((state->parts[p].flags & ADDPART_FLAG_ROOTDEV) && ROOT_DEV == 0)
+ ROOT_DEV = part->bd_dev;
+
+ if (state->parts[p].flags & ADDPART_FLAG_READONLY)
+ set_disk_ro(disk, true);
+#endif
+
return true;
Expand Down

0 comments on commit 506ddce

Please sign in to comment.