From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3969D26F29B; Wed, 8 Apr 2026 20:21:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775679712; cv=none; b=L8/0aYle0uJNss6f3u17I6O/iZzpT9z6DxJ7yJLGYp46SXSSlRA7RZflbP1eZx+IXiqc2SQcAQzAp8X8rVQUiYeb5kDzyBXVpTQavJQVzbvQoZUmR+SWkAtyR0bdjyze6+NVWKuBSZDiGqmOeqiGLmgubbvxuSmyGjZJeUxewBE= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775679712; c=relaxed/simple; bh=BVou9F0SrGtga1GQXF8xZ89pmIJJKkDR1j3Ghv7t+4A=; h=Date:From:To:Cc:Subject:Message-ID:MIME-Version:Content-Type: Content-Disposition; b=aa9V+SY1qbANiVbLiI6zg14Vz8iys2Vnc0uELF6F67gSVfXXNW+vxB0WPQtHITMVt9QDzynk7PP7mgPPvB+YTS1pMual9XzyixNqdxsVWDYfkqc8Fo1OXpRxIm66M7nWqz1bp9JM1pjzWlkchBHQXnqD/Cwjz9iCRBear33rCXA= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=ME2LKMB7; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="ME2LKMB7" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 2344EC19421; Wed, 8 Apr 2026 20:21:51 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1775679711; bh=BVou9F0SrGtga1GQXF8xZ89pmIJJKkDR1j3Ghv7t+4A=; h=Date:From:To:Cc:Subject:From; b=ME2LKMB7bLM1rKawwrRWht9ldeC2LdjqyePI9s6loiNYq0EUFtphoVJeYGL+M+9Nt 35IOreY/y82jRevjJCQizmxdNtkbuHz4MvqRAN26VfXVeJyVErmZNwYAYpTNivkmHF mOWLSQhAfKe1TjCqTfWUBDfF9eOTDtjv3MWzpv8zJ8y1rmJNQa5lfgRpV4xEkQWZeH /pKETQiBiw4GOkM+X5cYRSFoVn087SOeCfQjx+ndFuHxSK9e0iZDVQGrZAO5YZj3y1 slR3pdYN3Am/EuoQ2bwu1spz9sE6ubn0ja4GMhgT/D3Ex/JhXOfRNoaUYnOAkQ+hkd WvNFiKPlLXKNQ== Date: Wed, 8 Apr 2026 14:20:46 -0600 From: "Gustavo A. R. Silva" To: Miri Korenblit Cc: linux-wireless@vger.kernel.org, linux-kernel@vger.kernel.org, "Gustavo A. R. Silva" , linux-hardening@vger.kernel.org Subject: [PATCH][next] wifi: iwlwifi: mld: rx: Avoid a -Wflex-array-member-not-at-end warning Message-ID: Precedence: bulk X-Mailing-List: linux-hardening@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline -Wflex-array-member-not-at-end was introduced in GCC-14, and we are getting ready to enable it, globally. Use an anonymous embedded struct (enabled via -fms-extensions) to split the header portion from the flexible-array member in struct iwl_rxq_sync_cmd, so the new header type struct iwl_rxq_sync_cmd_hdr can be referenced independently (of the flexible-array member), and fix the following warning: drivers/net/wireless/intel/iwlwifi/mld/rx.c:2172:41: warning: structure containing a flexible array member is not at the end of another structure [-Wflex-array-member-not-at-end] Add comments and a static_assert() to prevent adding new members directly to struct iwl_rxq_sync_cmd. Any new members must be added to struct iwl_rxq_sync_cmd_hdr instead. This preserves the expected memory layout between the header and the flexible-array member. Signed-off-by: Gustavo A. R. Silva --- .../net/wireless/intel/iwlwifi/fw/api/rx.h | 21 ++++++++++++++++--- drivers/net/wireless/intel/iwlwifi/mld/rx.c | 2 +- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/drivers/net/wireless/intel/iwlwifi/fw/api/rx.h b/drivers/net/wireless/intel/iwlwifi/fw/api/rx.h index ac6c1ef2cbcd..02a5bacfb175 100644 --- a/drivers/net/wireless/intel/iwlwifi/fw/api/rx.h +++ b/drivers/net/wireless/intel/iwlwifi/fw/api/rx.h @@ -918,19 +918,34 @@ struct iwl_rss_config_cmd { #define IWL_MULTI_QUEUE_SYNC_SENDER_MSK 0xf /** - * struct iwl_rxq_sync_cmd - RXQ notification trigger + * struct iwl_rxq_sync_cmd_hdr - RXQ notification trigger header * * @flags: flags of the notification. bit 0:3 are the sender queue * @rxq_mask: rx queues to send the notification on * @count: number of bytes in payload, should be DWORD aligned - * @payload: data to send to rx queues */ -struct iwl_rxq_sync_cmd { +struct iwl_rxq_sync_cmd_hdr { __le32 flags; __le32 rxq_mask; __le32 count; +} __packed; + +/** + * struct iwl_rxq_sync_cmd - RXQ notification trigger + * + * (NOTE: New members MUST NOT be added directly to this struct. Add them to + * struct iwl_rxq_sync_cmd_hdr instead.) + * + * @iwl_rxq_sync_cmd_hdr: anonymous embedded header - members are directly + * accessible + * @payload: data to send to rx queues + */ +struct iwl_rxq_sync_cmd { + struct iwl_rxq_sync_cmd_hdr; u8 payload[]; } __packed; /* MULTI_QUEUE_DRV_SYNC_HDR_CMD_API_S_VER_1 */ +static_assert(offsetof(struct iwl_rxq_sync_cmd, payload) == sizeof(struct iwl_rxq_sync_cmd_hdr), + "New members must be added to struct iwl_rxq_sync_cmd_hdr instead."); /** * struct iwl_rxq_sync_notification - Notification triggered by RXQ diff --git a/drivers/net/wireless/intel/iwlwifi/mld/rx.c b/drivers/net/wireless/intel/iwlwifi/mld/rx.c index a2e586c6ea67..492c03b8e5a0 100644 --- a/drivers/net/wireless/intel/iwlwifi/mld/rx.c +++ b/drivers/net/wireless/intel/iwlwifi/mld/rx.c @@ -2172,7 +2172,7 @@ void iwl_mld_sync_rx_queues(struct iwl_mld *mld, { u8 num_rx_queues = mld->trans->info.num_rxqs; struct { - struct iwl_rxq_sync_cmd sync_cmd; + struct iwl_rxq_sync_cmd_hdr sync_cmd; struct iwl_mld_internal_rxq_notif notif; } __packed cmd = { .sync_cmd.rxq_mask = cpu_to_le32(BIT(num_rx_queues) - 1), -- 2.43.0