]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
4.19-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 11 Jul 2023 20:39:20 +0000 (22:39 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 11 Jul 2023 20:39:20 +0000 (22:39 +0200)
added patches:
block-change-all-__u32-annotations-to-__be32-in-affs_hardblocks.h.patch

queue-4.19/block-change-all-__u32-annotations-to-__be32-in-affs_hardblocks.h.patch [new file with mode: 0644]
queue-4.19/series

diff --git a/queue-4.19/block-change-all-__u32-annotations-to-__be32-in-affs_hardblocks.h.patch b/queue-4.19/block-change-all-__u32-annotations-to-__be32-in-affs_hardblocks.h.patch
new file mode 100644 (file)
index 0000000..ca54e71
--- /dev/null
@@ -0,0 +1,142 @@
+From 95a55437dc49fb3342c82e61f5472a71c63d9ed0 Mon Sep 17 00:00:00 2001
+From: Michael Schmitz <schmitzmic@gmail.com>
+Date: Wed, 21 Jun 2023 08:17:24 +1200
+Subject: block: change all __u32 annotations to __be32 in affs_hardblocks.h
+
+From: Michael Schmitz <schmitzmic@gmail.com>
+
+commit 95a55437dc49fb3342c82e61f5472a71c63d9ed0 upstream.
+
+The Amiga partition parser module uses signed int for partition sector
+address and count, which will overflow for disks larger than 1 TB.
+
+Use u64 as type for sector address and size to allow using disks up to
+2 TB without LBD support, and disks larger than 2 TB with LBD. The RBD
+format allows to specify disk sizes up to 2^128 bytes (though native
+OS limitations reduce this somewhat, to max 2^68 bytes), so check for
+u64 overflow carefully to protect against overflowing sector_t.
+
+This bug was reported originally in 2012, and the fix was created by
+the RDB author, Joanne Dow <jdow@earthlink.net>. A patch had been
+discussed and reviewed on linux-m68k at that time but never officially
+submitted (now resubmitted as patch 1 of this series).
+
+Patch 3 (this series) adds additional error checking and warning
+messages. One of the error checks now makes use of the previously
+unused rdb_CylBlocks field, which causes a 'sparse' warning
+(cast to restricted __be32).
+
+Annotate all 32 bit fields in affs_hardblocks.h as __be32, as the
+on-disk format of RDB and partition blocks is always big endian.
+
+Reported-by: Martin Steigerwald <Martin@lichtvoll.de>
+Closes: https://bugzilla.kernel.org/show_bug.cgi?id=43511
+Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
+Message-ID: <201206192146.09327.Martin@lichtvoll.de>
+Cc: <stable@vger.kernel.org> # 5.2
+Signed-off-by: Michael Schmitz <schmitzmic@gmail.com>
+Reviewed-by: Christoph Hellwig <hch@lst.de>
+Reviewed-by: Geert Uytterhoeven <geert@linux-m68k.org>
+Link: https://lore.kernel.org/r/20230620201725.7020-3-schmitzmic@gmail.com
+Signed-off-by: Jens Axboe <axboe@kernel.dk>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ include/uapi/linux/affs_hardblocks.h |   68 +++++++++++++++++------------------
+ 1 file changed, 34 insertions(+), 34 deletions(-)
+
+--- a/include/uapi/linux/affs_hardblocks.h
++++ b/include/uapi/linux/affs_hardblocks.h
+@@ -7,42 +7,42 @@
+ /* Just the needed definitions for the RDB of an Amiga HD. */
+ struct RigidDiskBlock {
+-      __u32   rdb_ID;
++      __be32  rdb_ID;
+       __be32  rdb_SummedLongs;
+-      __s32   rdb_ChkSum;
+-      __u32   rdb_HostID;
++      __be32  rdb_ChkSum;
++      __be32  rdb_HostID;
+       __be32  rdb_BlockBytes;
+-      __u32   rdb_Flags;
+-      __u32   rdb_BadBlockList;
++      __be32  rdb_Flags;
++      __be32  rdb_BadBlockList;
+       __be32  rdb_PartitionList;
+-      __u32   rdb_FileSysHeaderList;
+-      __u32   rdb_DriveInit;
+-      __u32   rdb_Reserved1[6];
+-      __u32   rdb_Cylinders;
+-      __u32   rdb_Sectors;
+-      __u32   rdb_Heads;
+-      __u32   rdb_Interleave;
+-      __u32   rdb_Park;
+-      __u32   rdb_Reserved2[3];
+-      __u32   rdb_WritePreComp;
+-      __u32   rdb_ReducedWrite;
+-      __u32   rdb_StepRate;
+-      __u32   rdb_Reserved3[5];
+-      __u32   rdb_RDBBlocksLo;
+-      __u32   rdb_RDBBlocksHi;
+-      __u32   rdb_LoCylinder;
+-      __u32   rdb_HiCylinder;
+-      __u32   rdb_CylBlocks;
+-      __u32   rdb_AutoParkSeconds;
+-      __u32   rdb_HighRDSKBlock;
+-      __u32   rdb_Reserved4;
++      __be32  rdb_FileSysHeaderList;
++      __be32  rdb_DriveInit;
++      __be32  rdb_Reserved1[6];
++      __be32  rdb_Cylinders;
++      __be32  rdb_Sectors;
++      __be32  rdb_Heads;
++      __be32  rdb_Interleave;
++      __be32  rdb_Park;
++      __be32  rdb_Reserved2[3];
++      __be32  rdb_WritePreComp;
++      __be32  rdb_ReducedWrite;
++      __be32  rdb_StepRate;
++      __be32  rdb_Reserved3[5];
++      __be32  rdb_RDBBlocksLo;
++      __be32  rdb_RDBBlocksHi;
++      __be32  rdb_LoCylinder;
++      __be32  rdb_HiCylinder;
++      __be32  rdb_CylBlocks;
++      __be32  rdb_AutoParkSeconds;
++      __be32  rdb_HighRDSKBlock;
++      __be32  rdb_Reserved4;
+       char    rdb_DiskVendor[8];
+       char    rdb_DiskProduct[16];
+       char    rdb_DiskRevision[4];
+       char    rdb_ControllerVendor[8];
+       char    rdb_ControllerProduct[16];
+       char    rdb_ControllerRevision[4];
+-      __u32   rdb_Reserved5[10];
++      __be32  rdb_Reserved5[10];
+ };
+ #define       IDNAME_RIGIDDISK        0x5244534B      /* "RDSK" */
+@@ -50,16 +50,16 @@ struct RigidDiskBlock {
+ struct PartitionBlock {
+       __be32  pb_ID;
+       __be32  pb_SummedLongs;
+-      __s32   pb_ChkSum;
+-      __u32   pb_HostID;
++      __be32  pb_ChkSum;
++      __be32  pb_HostID;
+       __be32  pb_Next;
+-      __u32   pb_Flags;
+-      __u32   pb_Reserved1[2];
+-      __u32   pb_DevFlags;
++      __be32  pb_Flags;
++      __be32  pb_Reserved1[2];
++      __be32  pb_DevFlags;
+       __u8    pb_DriveName[32];
+-      __u32   pb_Reserved2[15];
++      __be32  pb_Reserved2[15];
+       __be32  pb_Environment[17];
+-      __u32   pb_EReserved[15];
++      __be32  pb_EReserved[15];
+ };
+ #define       IDNAME_PARTITION        0x50415254      /* "PART" */
index ef779d7345ddbdba2bb084f282ae73d6798c38c0..ac527dafdd6cbdd8776d91eea27ea9b6c6c9f5af 100644 (file)
@@ -84,3 +84,4 @@ arcv2-entry-avoid-a-branch.patch
 arcv2-entry-rewrite-to-enable-use-of-double-load-sto.patch
 arc-define-asm_nl-and-__align-_str-outside-ifdef-__a.patch
 usb-serial-option-add-lara-r6-01b-pids.patch
+block-change-all-__u32-annotations-to-__be32-in-affs_hardblocks.h.patch