On 8/29/25 18:07, Michael Kelley wrote:
From: Gustavo A. R. Silva <[email protected]> Sent: Friday, August 29, 2025 4:44 AM-Wflex-array-member-not-at-end was introduced in GCC-14, and we are getting ready to enable it, globally. Use the new TRAILING_OVERLAP() helper to fix 159 of the following type of warnings: 159 ./include/linux/hyperv.h:711:38: warning: structure containing a flexible array member is not at the end of another structure [-Wflex-array-member-not-at-end] This helper creates a union between a flexible-array member (FAM) and a set of members that would otherwise follow it. This overlays the trailing members onto the FAM while preserving the original memory layout. Also, move `struct vmbus_close_msg close_msg;` at the end of `struct vmbus_channel`, as `struct vmbus_channel_msginfo,` ends in a flexible array member. Signed-off-by: Gustavo A. R. Silva <[email protected]> -- Changes in v2: - Fix subject line. v1: - Link: https://lore.kernel.org/linux-hardening/aLGSDpi4xDjUUYVm@kspp/ include/linux/hyperv.h | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/include/linux/hyperv.h b/include/linux/hyperv.h index a59c5c3e95fb..efdd570669fa 100644 --- a/include/linux/hyperv.h +++ b/include/linux/hyperv.h @@ -708,8 +708,9 @@ struct vmbus_channel_msginfo { }; struct vmbus_close_msg { - struct vmbus_channel_msginfo info;It turns out that this field of struct vmbus_close_msg is never used. It dates back to 2011, so maybe somewhere along the way it stopped being used, but struct vmbus_close_msg was left unchanged. So a better solution to the "flex-array-member-not-at-end" issue is to eliminate this structure entirely, and use struct vmbus_channel_close_channel directly in the one place where struct vmbus_close_msg is currently used. I've done a quick test of this change and I don't see any problems. I'll submit a separate patch with my proposed change, and this patch can be dropped. Does that work?
Yes, please. Go for it. :) Thanks! -Gustavo
