Skip to content

Commit 52f758e

Browse files
GustavoARSilvaliuw
authored andcommitted
hyperv: Avoid -Wflex-array-member-not-at-end warning
-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 the following warning: include/hyperv/hvgdk_mini.h:581:25: 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 MEMBER u64 gva_list[]; onto the FAM struct hv_tlb_flush_ex::hv_vp_set.bank_contents[], while keeping the FAM and the start of MEMBER aligned. The static_assert() ensures this alignment remains, and it's intentionally placed inmediately after the related structure --no blank line in between. Signed-off-by: Gustavo A. R. Silva <gustavoars@kernel.org> Signed-off-by: Wei Liu <wei.liu@kernel.org>
1 parent 92c172a commit 52f758e

1 file changed

Lines changed: 5 additions & 2 deletions

File tree

include/hyperv/hvgdk_mini.h

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -578,9 +578,12 @@ struct hv_tlb_flush { /* HV_INPUT_FLUSH_VIRTUAL_ADDRESS_LIST */
578578
struct hv_tlb_flush_ex {
579579
u64 address_space;
580580
u64 flags;
581-
struct hv_vpset hv_vp_set;
582-
u64 gva_list[];
581+
__TRAILING_OVERLAP(struct hv_vpset, hv_vp_set, bank_contents, __packed,
582+
u64 gva_list[];
583+
);
583584
} __packed;
585+
static_assert(offsetof(struct hv_tlb_flush_ex, hv_vp_set.bank_contents) ==
586+
offsetof(struct hv_tlb_flush_ex, gva_list));
584587

585588
struct ms_hyperv_tsc_page { /* HV_REFERENCE_TSC_PAGE */
586589
volatile u32 tsc_sequence;

0 commit comments

Comments
 (0)