diff options
author | Kalle Valo <kvalo@codeaurora.org> | 2020-01-26 17:54:46 +0200 |
---|---|---|
committer | Kalle Valo <kvalo@codeaurora.org> | 2020-01-26 17:54:46 +0200 |
commit | 2a13513f99e735184fd6f889d78da6424fda80a1 (patch) | |
tree | 1e8284f8b7eb65cb30cb7717561a7e6ff5c7a5b6 /drivers/net/wireless/ath/ath10k/sdio.c | |
parent | c2f9a4e4a5abfc84c01b738496b3fd2d471e0b18 (diff) | |
parent | d7809bd9eae67b4252cbc4672431610227cbb729 (diff) | |
download | linux-2a13513f99e735184fd6f889d78da6424fda80a1.tar.bz2 |
Merge ath-next from git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git
ath.git patches for v5.6. Major changes:
ar5523
* add support for SMCWUSBT-G2 USB device
Diffstat (limited to 'drivers/net/wireless/ath/ath10k/sdio.c')
-rw-r--r-- | drivers/net/wireless/ath/ath10k/sdio.c | 24 |
1 files changed, 18 insertions, 6 deletions
diff --git a/drivers/net/wireless/ath/ath10k/sdio.c b/drivers/net/wireless/ath/ath10k/sdio.c index 6fdf71b8b676..e5316b911e1d 100644 --- a/drivers/net/wireless/ath/ath10k/sdio.c +++ b/drivers/net/wireless/ath/ath10k/sdio.c @@ -642,16 +642,23 @@ static int ath10k_sdio_mbox_rx_fetch(struct ath10k *ar) ret = ath10k_sdio_readsb(ar, ar_sdio->mbox_info.htc_addr, skb->data, pkt->alloc_len); - - if (ret) { - ar_sdio->n_rx_pkts = 0; - ath10k_sdio_mbox_free_rx_pkt(pkt); - return ret; - } + if (ret) + goto err; htc_hdr = (struct ath10k_htc_hdr *)skb->data; pkt->act_len = le16_to_cpu(htc_hdr->len) + sizeof(*htc_hdr); + + if (pkt->act_len > pkt->alloc_len) { + ret = -EINVAL; + goto err; + } + skb_put(skb, pkt->act_len); + return 0; + +err: + ar_sdio->n_rx_pkts = 0; + ath10k_sdio_mbox_free_rx_pkt(pkt); return ret; } @@ -687,6 +694,11 @@ static int ath10k_sdio_mbox_rx_fetch_bundle(struct ath10k *ar) htc_hdr = (struct ath10k_htc_hdr *)(ar_sdio->vsg_buffer + pkt_offset); pkt->act_len = le16_to_cpu(htc_hdr->len) + sizeof(*htc_hdr); + if (pkt->act_len > pkt->alloc_len ) { + ret = -EINVAL; + goto err; + } + skb_put_data(pkt->skb, htc_hdr, pkt->act_len); pkt_offset += pkt->alloc_len; } |