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

Reply via email to