On Wed, Jun 25, 2025 at 03:42:16PM -0600, Gustavo A. R. Silva wrote: > -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 a dozen instances of > the following type of warning: > > drivers/acpi/nfit/intel.c:692:35: warning: structure containing a flexible array member is not at the end of another structure [-Wflex-array-member-not-at-end] > > Acked-by: Dan Williams <dan.j.williams@xxxxxxxxx> > Tested-by: Dan Williams <dan.j.williams@xxxxxxxxx> > Signed-off-by: Gustavo A. R. Silva <gustavoars@xxxxxxxxxx> > --- > This patch should go through: > https://git.kernel.org/pub/scm/linux/kernel/git/kees/linux.git/ (for-next/hardening) > > Changes in v4: > - Use the new TRAILING_OVERLAP() helper. > > Changes in v3: > - Use union instead of DEFINE_RAW_FLEX(). > - Link: https://lore.kernel.org/linux-hardening/aEneid7gdAZr1_kR@kspp/ > > Changes in v2: > - Use DEFINE_RAW_FLEX() instead of __struct_group(). > - Link: https://lore.kernel.org/linux-hardening/Z-QpUcxFCRByYcTA@kspp/ > > v1: > - Link: https://lore.kernel.org/linux-hardening/Z618ILbAR8YAvTkd@kspp/ > > drivers/acpi/nfit/intel.c | 84 +++++++++++++++++---------------------- > 1 file changed, 36 insertions(+), 48 deletions(-) > > diff --git a/drivers/acpi/nfit/intel.c b/drivers/acpi/nfit/intel.c > index 3902759abcba..d0b72e906428 100644 > --- a/drivers/acpi/nfit/intel.c > +++ b/drivers/acpi/nfit/intel.c > @@ -55,10 +55,9 @@ static unsigned long intel_security_flags(struct nvdimm *nvdimm, > { > struct nfit_mem *nfit_mem = nvdimm_provider_data(nvdimm); > unsigned long security_flags = 0; > - struct { > - struct nd_cmd_pkg pkg; > - struct nd_intel_get_security_state cmd; > - } nd_cmd = { > + TRAILING_OVERLAP(struct nd_cmd_pkg, pkg, nd_payload, > + struct nd_intel_get_security_state cmd; > + ) nd_cmd = { If you wanted, these could be even further minimized to this, leaving the trailing object indentation unchanged: - struct { - struct nd_cmd_pkg pkg; + TRAILING_OVERLAP(struct nd_cmd_pkg, pkg, nd_payload, struct nd_intel_get_security_state cmd; - } nd_cmd = { + ) nd_cmd = { -- Kees Cook