[PATCH v2] platform/chrome: cros_ec: Avoid -Wflex-array-member-not-at-end warning

Gustavo A. R. Silva posted 1 patch 1 month, 3 weeks ago
drivers/platform/chrome/cros_ec.c | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
[PATCH v2] platform/chrome: cros_ec: Avoid -Wflex-array-member-not-at-end warning
Posted by Gustavo A. R. Silva 1 month, 3 weeks ago
-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:

drivers/platform/chrome/cros_ec.c:106:40: 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.

Signed-off-by: Gustavo A. R. Silva <gustavoars@kernel.org>
---
Changes in v2:
 - Use the new TRAILING_OVERLAP() helper instead of DEFINE_RAW_FLEX().

v1:
 - Link: https://lore.kernel.org/linux-hardening/Z-apE0ZmckBjRDyx@kspp/

 drivers/platform/chrome/cros_ec.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/drivers/platform/chrome/cros_ec.c b/drivers/platform/chrome/cros_ec.c
index fd58781a2fb7..b1730362e399 100644
--- a/drivers/platform/chrome/cros_ec.c
+++ b/drivers/platform/chrome/cros_ec.c
@@ -102,14 +102,13 @@ EXPORT_SYMBOL(cros_ec_irq_thread);
 static int cros_ec_sleep_event(struct cros_ec_device *ec_dev, u8 sleep_event)
 {
 	int ret;
-	struct {
-		struct cros_ec_command msg;
+	TRAILING_OVERLAP(struct cros_ec_command, msg, data,
 		union {
 			struct ec_params_host_sleep_event req0;
 			struct ec_params_host_sleep_event_v1 req1;
 			struct ec_response_host_sleep_event_v1 resp1;
 		} u;
-	} __packed buf;
+	) __packed buf;
 
 	memset(&buf, 0, sizeof(buf));
 
-- 
2.43.0
Re: [PATCH v2] platform/chrome: cros_ec: Avoid -Wflex-array-member-not-at-end warning
Posted by Tzung-Bi Shih 1 month, 3 weeks ago
On Mon, Aug 11, 2025 at 10:27:22PM +0900, 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 the following warning:
> 
> drivers/platform/chrome/cros_ec.c:106:40: warning: structure containing a flexible array member is not at the end of another structure [-Wflex-array-member-not-at-end]
>
> [...]

Applied to

    https://git.kernel.org/pub/scm/linux/kernel/git/chrome-platform/linux.git for-next

[1/1] platform/chrome: cros_ec: Avoid -Wflex-array-member-not-at-end warning
      commit: 8abbbbb588f1f1bf95ae56c1531a17520ce487e2

Thanks!