git: 54974e731f27 - stable/14 - cd9660: Make sure that struct ifid fits in generic filehandle structure

From: Mark Johnston <markj_at_FreeBSD.org>
Date: Fri, 13 Dec 2024 01:44:00 UTC
The branch stable/14 has been updated by markj:

URL: https://cgit.FreeBSD.org/src/commit/?id=54974e731f279941ef7aebd7d30ba2e9299a4056

commit 54974e731f279941ef7aebd7d30ba2e9299a4056
Author:     Mark Johnston <markj@FreeBSD.org>
AuthorDate: 2024-12-06 02:03:59 +0000
Commit:     Mark Johnston <markj@FreeBSD.org>
CommitDate: 2024-12-13 01:34:17 +0000

    cd9660: Make sure that struct ifid fits in generic filehandle structure
    
    File system specific *fid structures are copied into the generic
    struct fid defined in sys/mount.h.
    As such, they cannot be larger than struct fid.
    
    This patch packs the structure and checks via a __Static_assert().
    
    Reported by:    Kevin Miller <mas@0x194.net>
    Reviewed by:    olce, imp, kib, emaste
    MFC after:      1 week
    Differential Revision:  https://reviews.freebsd.org/D47879
    
    (cherry picked from commit 205659c43d87bd42c4a0819fde8f81e8ebba068e)
---
 sys/fs/cd9660/cd9660_vnops.c | 3 +++
 sys/fs/cd9660/iso.h          | 2 +-
 2 files changed, 4 insertions(+), 1 deletion(-)

diff --git a/sys/fs/cd9660/cd9660_vnops.c b/sys/fs/cd9660/cd9660_vnops.c
index cb619379e2cc..31dacb392a6b 100644
--- a/sys/fs/cd9660/cd9660_vnops.c
+++ b/sys/fs/cd9660/cd9660_vnops.c
@@ -761,6 +761,9 @@ cd9660_pathconf(struct vop_pathconf_args *ap)
 	/* NOTREACHED */
 }
 
+_Static_assert(sizeof(struct ifid) <= sizeof(struct fid),
+    "struct ifid must be no larger than struct fid");
+
 /*
  * Vnode pointer to File handle
  */
diff --git a/sys/fs/cd9660/iso.h b/sys/fs/cd9660/iso.h
index bf98e75c42d9..b54f5f8e5cf4 100644
--- a/sys/fs/cd9660/iso.h
+++ b/sys/fs/cd9660/iso.h
@@ -269,7 +269,7 @@ struct ifid {
 	u_short		ifid_pad;
 	cd_ino_t	ifid_ino;
 	long		ifid_start;
-};
+} __packed;
 
 #define VFSTOISOFS(mp)	((struct iso_mnt *)((mp)->mnt_data))