Skip to content

Commit

Permalink
mt76: mt7921: fix the coredump is being truncated
Browse files Browse the repository at this point in the history
Fix the maximum size of the coredump generated with current mt7921
firmware. Otherwise, a truncated coredump would be reported to userland
via dev_coredumpv.

Also, there is an additional error handling enhanced in the patch to avoid
the possible invalid buffer access when the system failed to create the
buffer to hold the coredump.

Fixes: 0da3c79 ("mt76: mt7921: add coredump support")
Co-developed-by: YN Chen <YN.Chen@mediatek.com>
Signed-off-by: YN Chen <YN.Chen@mediatek.com>
Signed-off-by: Sean Wang <sean.wang@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
  • Loading branch information
Sean Wang authored and Felix Fietkau committed Jun 19, 2021
1 parent 78b0328 commit 723885a
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 4 deletions.
2 changes: 1 addition & 1 deletion drivers/net/wireless/mediatek/mt76/mt76_connac.h
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
#define MT76_CONNAC_MAX_SCAN_MATCH 16

#define MT76_CONNAC_COREDUMP_TIMEOUT (HZ / 20)
#define MT76_CONNAC_COREDUMP_SZ (128 * 1024)
#define MT76_CONNAC_COREDUMP_SZ (1300 * 1024)

enum {
CMD_CBW_20MHZ = IEEE80211_STA_RX_BW_20,
Expand Down
9 changes: 6 additions & 3 deletions drivers/net/wireless/mediatek/mt76/mt7921/mac.c
Original file line number Diff line number Diff line change
Expand Up @@ -1548,7 +1548,7 @@ void mt7921_coredump_work(struct work_struct *work)
break;

skb_pull(skb, sizeof(struct mt7921_mcu_rxd));
if (data + skb->len - dump > MT76_CONNAC_COREDUMP_SZ) {
if (!dump || data + skb->len - dump > MT76_CONNAC_COREDUMP_SZ) {
dev_kfree_skb(skb);
continue;
}
Expand All @@ -1558,7 +1558,10 @@ void mt7921_coredump_work(struct work_struct *work)

dev_kfree_skb(skb);
}
dev_coredumpv(dev->mt76.dev, dump, MT76_CONNAC_COREDUMP_SZ,
GFP_KERNEL);

if (dump)
dev_coredumpv(dev->mt76.dev, dump, MT76_CONNAC_COREDUMP_SZ,
GFP_KERNEL);

mt7921_reset(&dev->mt76);
}

0 comments on commit 723885a

Please sign in to comment.