Commit 52f758ed authored by Gustavo A. R. Silva's avatar Gustavo A. R. Silva Committed by Wei Liu
Browse files

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: default avatarGustavo A. R. Silva <gustavoars@kernel.org>
Signed-off-by: default avatarWei Liu <wei.liu@kernel.org>
parent 92c172ae
Loading
Loading
Loading
Loading
+5 −2
Original line number Diff line number Diff line
@@ -578,9 +578,12 @@ struct hv_tlb_flush { /* HV_INPUT_FLUSH_VIRTUAL_ADDRESS_LIST */
struct hv_tlb_flush_ex {
	u64 address_space;
	u64 flags;
	struct hv_vpset hv_vp_set;
	__TRAILING_OVERLAP(struct hv_vpset, hv_vp_set, bank_contents, __packed,
		u64 gva_list[];
	);
} __packed;
static_assert(offsetof(struct hv_tlb_flush_ex, hv_vp_set.bank_contents) ==
	      offsetof(struct hv_tlb_flush_ex, gva_list));

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