Message ID | ZgOEoCWguq3n1OqQ@neat |
---|---|
State | New |
Headers | show |
Series | [next] wifi: wil6210: Avoid -Wflex-array-member-not-at-end warning | expand |
Hi all, Please, drop this. The following patch replaces it: https://lore.kernel.org/linux-hardening/ZgRsn72WkHzfCUsa@neat/ Thanks -- Gustavo On 3/26/24 20:29, Gustavo A. R. Silva wrote: > Use the `DEFINE_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/net/wireless/ath/wil6210/wmi.c:4018:49: warning: structure containing a flexible array member is not at the end of another structure [-Wflex-array-member-not-at-end] > > Link: https://github.com/KSPP/linux/issues/202 > Signed-off-by: Gustavo A. R. Silva <gustavoars@kernel.org> > --- > drivers/net/wireless/ath/wil6210/wmi.c | 19 +++++++------------ > 1 file changed, 7 insertions(+), 12 deletions(-) > > diff --git a/drivers/net/wireless/ath/wil6210/wmi.c b/drivers/net/wireless/ath/wil6210/wmi.c > index 6fdb77d4c59e..cc0ad70f0d01 100644 > --- a/drivers/net/wireless/ath/wil6210/wmi.c > +++ b/drivers/net/wireless/ath/wil6210/wmi.c > @@ -4014,28 +4014,23 @@ int wmi_set_cqm_rssi_config(struct wil6210_priv *wil, > struct net_device *ndev = wil->main_ndev; > struct wil6210_vif *vif = ndev_to_vif(ndev); > int rc; > - struct { > - struct wmi_set_link_monitor_cmd cmd; > - s8 rssi_thold; > - } __packed cmd = { > - .cmd = { > - .rssi_hyst = rssi_hyst, > - .rssi_thresholds_list_size = 1, > - }, > - .rssi_thold = rssi_thold, > - }; > struct { > struct wmi_cmd_hdr hdr; > struct wmi_set_link_monitor_event evt; > } __packed reply = { > .evt = {.status = WMI_FW_STATUS_FAILURE}, > }; > + DEFINE_FLEX(struct wmi_set_link_monitor_cmd, cmd, > + rssi_thresholds_list, rssi_thresholds_list_size, 1); > + > + cmd->rssi_hyst = rssi_hyst; > + cmd->rssi_thresholds_list[0] = rssi_thold; > > if (rssi_thold > S8_MAX || rssi_thold < S8_MIN || rssi_hyst > U8_MAX) > return -EINVAL; > > - rc = wmi_call(wil, WMI_SET_LINK_MONITOR_CMDID, vif->mid, &cmd, > - sizeof(cmd), WMI_SET_LINK_MONITOR_EVENTID, > + rc = wmi_call(wil, WMI_SET_LINK_MONITOR_CMDID, vif->mid, cmd, > + sizeof(*cmd), WMI_SET_LINK_MONITOR_EVENTID, > &reply, sizeof(reply), WIL_WMI_CALL_GENERAL_TO_MS); > if (rc) { > wil_err(wil, "WMI_SET_LINK_MONITOR_CMDID failed, rc %d\n", rc);
diff --git a/drivers/net/wireless/ath/wil6210/wmi.c b/drivers/net/wireless/ath/wil6210/wmi.c index 6fdb77d4c59e..cc0ad70f0d01 100644 --- a/drivers/net/wireless/ath/wil6210/wmi.c +++ b/drivers/net/wireless/ath/wil6210/wmi.c @@ -4014,28 +4014,23 @@ int wmi_set_cqm_rssi_config(struct wil6210_priv *wil, struct net_device *ndev = wil->main_ndev; struct wil6210_vif *vif = ndev_to_vif(ndev); int rc; - struct { - struct wmi_set_link_monitor_cmd cmd; - s8 rssi_thold; - } __packed cmd = { - .cmd = { - .rssi_hyst = rssi_hyst, - .rssi_thresholds_list_size = 1, - }, - .rssi_thold = rssi_thold, - }; struct { struct wmi_cmd_hdr hdr; struct wmi_set_link_monitor_event evt; } __packed reply = { .evt = {.status = WMI_FW_STATUS_FAILURE}, }; + DEFINE_FLEX(struct wmi_set_link_monitor_cmd, cmd, + rssi_thresholds_list, rssi_thresholds_list_size, 1); + + cmd->rssi_hyst = rssi_hyst; + cmd->rssi_thresholds_list[0] = rssi_thold; if (rssi_thold > S8_MAX || rssi_thold < S8_MIN || rssi_hyst > U8_MAX) return -EINVAL; - rc = wmi_call(wil, WMI_SET_LINK_MONITOR_CMDID, vif->mid, &cmd, - sizeof(cmd), WMI_SET_LINK_MONITOR_EVENTID, + rc = wmi_call(wil, WMI_SET_LINK_MONITOR_CMDID, vif->mid, cmd, + sizeof(*cmd), WMI_SET_LINK_MONITOR_EVENTID, &reply, sizeof(reply), WIL_WMI_CALL_GENERAL_TO_MS); if (rc) { wil_err(wil, "WMI_SET_LINK_MONITOR_CMDID failed, rc %d\n", rc);
Use the `DEFINE_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/net/wireless/ath/wil6210/wmi.c:4018:49: warning: structure containing a flexible array member is not at the end of another structure [-Wflex-array-member-not-at-end] Link: https://github.com/KSPP/linux/issues/202 Signed-off-by: Gustavo A. R. Silva <gustavoars@kernel.org> --- drivers/net/wireless/ath/wil6210/wmi.c | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-)