All the mail mirrored from lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH][next] wifi: wil6210: Avoid -Wflex-array-member-not-at-end warning
@ 2024-03-27  2:29 Gustavo A. R. Silva
  2024-03-27 19:02 ` Gustavo A. R. Silva
  0 siblings, 1 reply; 2+ messages in thread
From: Gustavo A. R. Silva @ 2024-03-27  2:29 UTC (permalink / raw
  To: Kalle Valo
  Cc: linux-wireless, linux-kernel, Gustavo A. R. Silva,
	linux-hardening

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);
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH][next] wifi: wil6210: Avoid -Wflex-array-member-not-at-end warning
  2024-03-27  2:29 [PATCH][next] wifi: wil6210: Avoid -Wflex-array-member-not-at-end warning Gustavo A. R. Silva
@ 2024-03-27 19:02 ` Gustavo A. R. Silva
  0 siblings, 0 replies; 2+ messages in thread
From: Gustavo A. R. Silva @ 2024-03-27 19:02 UTC (permalink / raw
  To: Gustavo A. R. Silva, Kalle Valo
  Cc: linux-wireless, linux-kernel, linux-hardening

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);

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2024-03-27 19:02 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-03-27  2:29 [PATCH][next] wifi: wil6210: Avoid -Wflex-array-member-not-at-end warning Gustavo A. R. Silva
2024-03-27 19:02 ` Gustavo A. R. Silva

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.