diff options
author | Johannes Berg <johannes.berg@intel.com> | 2022-05-23 19:02:01 +0300 |
---|---|---|
committer | Kalle Valo <kvalo@kernel.org> | 2022-05-30 12:13:25 +0300 |
commit | d944e09ea839033476e43fe03db0121b7be5154e (patch) | |
tree | 2dfd288053fd645d04082ac82ded2f5e70171f0f /drivers/net/wireless/marvell/libertas/host.h | |
parent | a54ce3703613e41fe1d98060b62ec09a3984dc28 (diff) | |
download | linux-d944e09ea839033476e43fe03db0121b7be5154e.tar.xz |
wifi: libertas: use variable-size data in assoc req/resp cmd
The firmware has a 512 limit here, but we use less, so gcc
starts complaining about it:
drivers/net/wireless/marvell/libertas/cfg.c:1198:63: warning: array subscript ‘struct cmd_ds_802_11_associate_response[0]’ is partly outside array bounds of ‘unsigned char[203]’ [-Warray-bounds]
1198 | "aid 0x%04x\n", status, le16_to_cpu(resp->statuscode),
| ^~
Since we size the command and response buffer per our needs
and not per the firmware maximum, change to a variable size
data array and put the 512 only into a comment.
In the end, that's actually what the code always wanted, and
it simplifies the code that used to subtract the fixed size
buffer size in two places.
Reported-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Acked-by: Kalle Valo <kvalo@kernel.org>
Signed-off-by: Kalle Valo <kvalo@kernel.org>
Link: https://lore.kernel.org/r/20220523180200.115fa27fbece.Ie66d874b047e7afad63900aa2df70f031711147e@changeid
Diffstat (limited to 'drivers/net/wireless/marvell/libertas/host.h')
-rw-r--r-- | drivers/net/wireless/marvell/libertas/host.h | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/net/wireless/marvell/libertas/host.h b/drivers/net/wireless/marvell/libertas/host.h index ceff4b92e7a1..a202b716ad5d 100644 --- a/drivers/net/wireless/marvell/libertas/host.h +++ b/drivers/net/wireless/marvell/libertas/host.h @@ -528,7 +528,8 @@ struct cmd_ds_802_11_associate { __le16 listeninterval; __le16 bcnperiod; u8 dtimperiod; - u8 iebuf[512]; /* Enough for required and most optional IEs */ + /* 512 permitted - enough for required and most optional IEs */ + u8 iebuf[]; } __packed; struct cmd_ds_802_11_associate_response { @@ -537,7 +538,8 @@ struct cmd_ds_802_11_associate_response { __le16 capability; __le16 statuscode; __le16 aid; - u8 iebuf[512]; + /* max 512 */ + u8 iebuf[]; } __packed; struct cmd_ds_802_11_set_wep { |