diff options
author | Jacob Keller <jacob.e.keller@intel.com> | 2023-03-07 15:02:12 -0800 |
---|---|---|
committer | Kalle Valo <kvalo@kernel.org> | 2023-03-13 15:44:29 +0200 |
commit | 84e9e2102bdc4f60ce131dcb74046219dc4425ae (patch) | |
tree | 1a9cb7abad3e1b7f55577d4a3a7170e9bc665626 | |
parent | a23c82e006db2f073fb65da8762f63735a510409 (diff) | |
download | linux-84e9e2102bdc4f60ce131dcb74046219dc4425ae.tar.gz linux-84e9e2102bdc4f60ce131dcb74046219dc4425ae.tar.bz2 linux-84e9e2102bdc4f60ce131dcb74046219dc4425ae.zip |
wifi: qtnfmac: use struct_size and size_sub for payload length
Replace the calculations for the payload length in
qtnf_cmd_band_fill_iftype with struct_size() and size_sub(). While
the payload length does not get directly passed to an allocation function,
the performed calculation is still calculating the size of a flexible array
structure (minus the size of a header structure).
Signed-off-by: Jacob Keller <jacob.e.keller@intel.com>
Cc: Igor Mitsyanko <imitsyanko@quantenna.com>
Cc: Sergey Matyukevich <geomatsi@gmail.com>
Signed-off-by: Kalle Valo <kvalo@kernel.org>
Link: https://lore.kernel.org/r/20230307230212.3735818-1-jacob.e.keller@intel.com
-rw-r--r-- | drivers/net/wireless/quantenna/qtnfmac/commands.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/drivers/net/wireless/quantenna/qtnfmac/commands.c b/drivers/net/wireless/quantenna/qtnfmac/commands.c index b1b73478d89b..68ae9c7ea95a 100644 --- a/drivers/net/wireless/quantenna/qtnfmac/commands.c +++ b/drivers/net/wireless/quantenna/qtnfmac/commands.c @@ -1325,9 +1325,10 @@ static int qtnf_cmd_band_fill_iftype(const u8 *data, struct ieee80211_sband_iftype_data *iftype_data; const struct qlink_tlv_iftype_data *tlv = (const struct qlink_tlv_iftype_data *)data; - size_t payload_len = tlv->n_iftype_data * sizeof(*tlv->iftype_data) + - sizeof(*tlv) - - sizeof(struct qlink_tlv_hdr); + size_t payload_len; + + payload_len = struct_size(tlv, iftype_data, tlv->n_iftype_data); + payload_len = size_sub(payload_len, sizeof(struct qlink_tlv_hdr)); if (tlv->hdr.len != cpu_to_le16(payload_len)) { pr_err("bad IFTYPE_DATA TLV len %u\n", tlv->hdr.len); |