wifi: mwifiex: Fix the size of a memory allocation in mwifiex_ret_802_11_scan()
authorChristophe JAILLET <christophe.jaillet@wanadoo.fr>
Sat, 6 May 2023 13:53:15 +0000 (15:53 +0200)
committerKalle Valo <kvalo@kernel.org>
Thu, 11 May 2023 13:18:23 +0000 (16:18 +0300)
The type of "mwifiex_adapter->nd_info" is "struct cfg80211_wowlan_nd_info",
not "struct cfg80211_wowlan_nd_match".

Use struct_size() to ease the computation of the needed size.

The current code over-allocates some memory, so is safe.
But it wastes 32 bytes.

Fixes: 7d7f07d8c5d3 ("mwifiex: add wowlan net-detect support")
Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Reviewed-by: Simon Horman <simon.horman@corigine.com>
Signed-off-by: Kalle Valo <kvalo@kernel.org>
Link: https://lore.kernel.org/r/7a6074fb056d2181e058a3cc6048d8155c20aec7.1683371982.git.christophe.jaillet@wanadoo.fr
drivers/net/wireless/marvell/mwifiex/scan.c

index ac8001c842935994725eb25170e2b22497531b46..644b1e134b01c4d69ba4d332c42713844969fe82 100644 (file)
@@ -2187,9 +2187,9 @@ int mwifiex_ret_802_11_scan(struct mwifiex_private *priv,
 
        if (nd_config) {
                adapter->nd_info =
-                       kzalloc(sizeof(struct cfg80211_wowlan_nd_match) +
-                               sizeof(struct cfg80211_wowlan_nd_match *) *
-                               scan_rsp->number_of_sets, GFP_ATOMIC);
+                       kzalloc(struct_size(adapter->nd_info, matches,
+                                           scan_rsp->number_of_sets),
+                               GFP_ATOMIC);
 
                if (adapter->nd_info)
                        adapter->nd_info->n_matches = scan_rsp->number_of_sets;