瀏覽代碼

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 <[email protected]>
Daniel Golle 3 年之前
父節點
當前提交
506ddce90f
共有 1 個文件被更改,包括 13 次插入4 次删除
  1. 13 4
      target/linux/generic/hack-5.15/410-block-fit-partition-parser.patch

+ 13 - 4
target/linux/generic/hack-5.15/410-block-fit-partition-parser.patch

@@ -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;