generic: 5.15: fix FIT partition parser on block partitions
authorDaniel Golle <daniel@makrotopia.org>
Tue, 29 Mar 2022 00:53:08 +0000 (01:53 +0100)
committerDaniel Golle <daniel@makrotopia.org>
Tue, 29 Mar 2022 00:56:05 +0000 (01:56 +0100)
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>
target/linux/generic/hack-5.15/410-block-fit-partition-parser.patch

index 560196ac72fa344a88a0c7f2f1bfd11c96d35641..5edacd5eae92e25d0863a1210c67bef8391fe568 100644 (file)
  #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;