Message ID | Z9dzDB1gttXehYGO@kspp (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | [next] iio: proximity: cros_ec_mkbp_proximity: Avoid -Wflex-array-member-not-at-end warning | expand |
On Mon, Mar 17, 2025 at 11:25:40AM +1030, Gustavo A. R. Silva wrote: > static int cros_ec_mkbp_proximity_query(struct cros_ec_device *ec_dev, > int *state) > { > - struct { > - struct cros_ec_command msg; > - union { > - struct ec_params_mkbp_info params; > - u32 switches; > - }; > - } __packed buf = { }; > - struct ec_params_mkbp_info *params = &buf.params; > - struct cros_ec_command *msg = &buf.msg; > - u32 *switches = &buf.switches; > + DEFINE_RAW_FLEX(struct cros_ec_command, buf, data, sizeof(u32)); max(sizeof(struct ec_params_mkbp_info), sizeof(u32))?
diff --git a/drivers/iio/proximity/cros_ec_mkbp_proximity.c b/drivers/iio/proximity/cros_ec_mkbp_proximity.c index 667369be0555..4fe3d84e2729 100644 --- a/drivers/iio/proximity/cros_ec_mkbp_proximity.c +++ b/drivers/iio/proximity/cros_ec_mkbp_proximity.c @@ -59,16 +59,10 @@ static int cros_ec_mkbp_proximity_parse_state(const void *data) static int cros_ec_mkbp_proximity_query(struct cros_ec_device *ec_dev, int *state) { - struct { - struct cros_ec_command msg; - union { - struct ec_params_mkbp_info params; - u32 switches; - }; - } __packed buf = { }; - struct ec_params_mkbp_info *params = &buf.params; - struct cros_ec_command *msg = &buf.msg; - u32 *switches = &buf.switches; + DEFINE_RAW_FLEX(struct cros_ec_command, buf, data, sizeof(u32)); + struct ec_params_mkbp_info *params = (struct ec_params_mkbp_info *)buf->data; + struct cros_ec_command *msg = buf; + u32 *switches = (u32 *)buf->data; size_t insize = sizeof(*switches); int ret;
-Wflex-array-member-not-at-end was introduced in GCC-14, and we are getting ready to enable it, globally. Use the `DEFINE_RAW_FLEX()` helper for an on-stack definition of a flexible structure where the size of the flexible-array member is known at compile-time, and refactor the rest of the code, accordingly. So, with these changes, fix the following warning: drivers/iio/proximity/cros_ec_mkbp_proximity.c:63:40: warning: structure containing a flexible array member is not at the end of another structure [-Wflex-array-member-not-at-end] Signed-off-by: Gustavo A. R. Silva <gustavoars@kernel.org> --- This looks pretty much like the following patch for RTC: https://lore.kernel.org/linux-hardening/Z9PpPg06OK8ghNvm@kspp/ Thanks drivers/iio/proximity/cros_ec_mkbp_proximity.c | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-)