smb: smb2pdu.h: Use static_assert() to check struct sizes
authorGustavo A. R. Silva <gustavoars@kernel.org>
Thu, 8 Aug 2024 22:04:04 +0000 (16:04 -0600)
committerSteve French <stfrench@microsoft.com>
Thu, 15 Aug 2024 21:06:55 +0000 (16:06 -0500)
Commit 9f9bef9bc5c6 ("smb: smb2pdu.h: Avoid -Wflex-array-member-not-at-end
warnings") introduced tagged `struct create_context_hdr`. We want to
ensure that when new members need to be added to the flexible structure,
they are always included within this tagged struct.

So, we use `static_assert()` to ensure that the memory layout for
both the flexible structure and the tagged struct is the same after
any changes.

Acked-by: Namjae Jeon <linkinjeon@kernel.org>
Signed-off-by: Gustavo A. R. Silva <gustavoars@kernel.org>
Signed-off-by: Steve French <stfrench@microsoft.com>
fs/smb/common/smb2pdu.h

index c3ee421..c769f9d 100644 (file)
@@ -1216,6 +1216,8 @@ struct create_context {
        );
        __u8 Buffer[];
 } __packed;
+static_assert(offsetof(struct create_context, Buffer) == sizeof(struct create_context_hdr),
+             "struct member likely outside of __struct_group()");
 
 struct smb2_create_req {
        struct smb2_hdr hdr;