generic: 5.15: fix FIT partition parser on block partitions
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>
This commit is contained in:
parent
1c7e146f7e
commit
506ddce90f
1 changed files with 13 additions and 4 deletions
|
@ -74,16 +74,25 @@
|
||||||
#ifdef CONFIG_SGI_PARTITION
|
#ifdef CONFIG_SGI_PARTITION
|
||||||
sgi_partition,
|
sgi_partition,
|
||||||
#endif
|
#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))
|
(state->parts[p].flags & ADDPART_FLAG_RAID))
|
||||||
md_autodetect_dev(part->bd_dev);
|
md_autodetect_dev(part->bd_dev);
|
||||||
|
|
||||||
+#ifdef CONFIG_FIT_PARTITION
|
+#ifdef CONFIG_FIT_PARTITION
|
||||||
+ if ((state->parts[p].flags & ADDPART_FLAG_ROOTDEV) && ROOT_DEV == 0)
|
+ if ((state->parts[p].flags & ADDPART_FLAG_ROOTDEV) && ROOT_DEV == 0)
|
||||||
+ ROOT_DEV = part->bd_dev;
|
+ ROOT_DEV = part->bd_dev;
|
||||||
+
|
|
||||||
+ if (state->parts[p].flags & ADDPART_FLAG_READONLY)
|
|
||||||
+ set_disk_ro(disk, true);
|
|
||||||
+#endif
|
+#endif
|
||||||
+
|
+
|
||||||
return true;
|
return true;
|
||||||
|
|
Loading…
Reference in a new issue