On 2025-04-29 13:20:51-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 `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/power/supply/cros_charge-control.c:57: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 <[email protected]> > --- > drivers/power/supply/cros_charge-control.c | 26 +++++++++------------- > 1 file changed, 10 insertions(+), 16 deletions(-) > > diff --git a/drivers/power/supply/cros_charge-control.c > b/drivers/power/supply/cros_charge-control.c > index 02d5bdbe2e8d..e33bc4c55bcc 100644 > --- a/drivers/power/supply/cros_charge-control.c > +++ b/drivers/power/supply/cros_charge-control.c > @@ -53,23 +53,17 @@ static int cros_chctl_send_charge_control_cmd(struct > cros_ec_device *cros_ec, > [3] = sizeof(struct ec_params_charge_control), > }; > > - struct { > - struct cros_ec_command msg; > - union { > - struct ec_params_charge_control req; > - struct ec_response_charge_control resp; > - } __packed data; > - } __packed buf = { > - .msg = { > - .command = EC_CMD_CHARGE_CONTROL, > - .version = cmd_version, > - .insize = 0, > - .outsize = outsizes[cmd_version], > - }, > - .data.req = *req, > - }; > + DEFINE_RAW_FLEX(struct cros_ec_command, msg, data, > + MAX(sizeof(struct ec_params_charge_control), > + sizeof(struct ec_response_charge_control))); > + > + msg->command = EC_CMD_CHARGE_CONTROL; > + msg->version = cmd_version; > + msg->insize = 0; > + msg->outsize = outsizes[cmd_version]; > + *(struct ec_params_charge_control *)msg->data = *req;
Please use cros_ec_cmd() like the LED driver. https://lore.kernel.org/lkml/Z-rKcgFjsyKvd58q@kspp/ > > - return cros_ec_cmd_xfer_status(cros_ec, &buf.msg); > + return cros_ec_cmd_xfer_status(cros_ec, msg); > } > > static int cros_chctl_configure_ec(struct cros_chctl_priv *priv) > -- > 2.43.0 >
