Skip to content

Commit 9ace7fb

Browse files
ryderlee1110opsiff
authored andcommitted
wifi: mt76: mt7915: fix potential tx_retries underflow
mainline inclusion from mainline-v7.2-rc1 category: bugfix When FIELD_GET returns 0 for the retry count, subtracting 1 causes an unsigned integer underflow, resulting in tx_retries becoming a very large value (0xFFFFFFFF for u32). Fix by checking if count is non-zero before subtracting 1. Fixes: 943e4fb ("wifi: mt76: mt7915: report tx retries/failed counts for non-WED path") Signed-off-by: Ryder Lee <ryder.lee@mediatek.com> Link: https://patch.msgid.link/20260605113306.3485554-1-ryder.lee@mediatek.com Signed-off-by: Felix Fietkau <nbd@nbd.name> (cherry picked from commit 05e72b6167970043348bfbe8f72a3b67a38a9f1c) Signed-off-by: Wentao Guan <guanwentao@uniontech.com>
1 parent cb0edde commit 9ace7fb

1 file changed

Lines changed: 5 additions & 5 deletions

File tree

  • drivers/net/wireless/mediatek/mt76/mt7915

drivers/net/wireless/mediatek/mt76/mt7915/mac.c

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -916,16 +916,16 @@ mt7915_mac_tx_free(struct mt7915_dev *dev, void *data, int len)
916916
}
917917

918918
if (!mtk_wed_device_active(&mdev->mmio.wed) && wcid) {
919-
u32 tx_retries = 0, tx_failed = 0;
919+
u32 tx_retries = 0, tx_failed = 0, count;
920920

921921
if (v3 && (info & MT_TX_FREE_MPDU_HEADER_V3)) {
922-
tx_retries =
923-
FIELD_GET(MT_TX_FREE_COUNT_V3, info) - 1;
922+
count = FIELD_GET(MT_TX_FREE_COUNT_V3, info);
923+
tx_retries = count ? count - 1 : 0;
924924
tx_failed = tx_retries +
925925
!!FIELD_GET(MT_TX_FREE_STAT_V3, info);
926926
} else if (!v3 && (info & MT_TX_FREE_MPDU_HEADER)) {
927-
tx_retries =
928-
FIELD_GET(MT_TX_FREE_COUNT, info) - 1;
927+
count = FIELD_GET(MT_TX_FREE_COUNT, info);
928+
tx_retries = count ? count - 1 : 0;
929929
tx_failed = tx_retries +
930930
!!FIELD_GET(MT_TX_FREE_STAT, info);
931931
}

0 commit comments

Comments
 (0)