mt76: mt7663u: fix dma header initialization
authorLorenzo Bianconi <lorenzo@kernel.org>
Mon, 24 Aug 2020 18:55:12 +0000 (20:55 +0200)
committerFelix Fietkau <nbd@nbd.name>
Thu, 24 Sep 2020 16:10:15 +0000 (18:10 +0200)
Fix length field corruption in usb dma header introduced adding sdio
support

Fixes: 75b10f0cbd0b ("mt76: mt76u: add mt76_skb_adjust_pad utility routine")
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
drivers/net/wireless/mediatek/mt76/mt7615/usb_mcu.c
drivers/net/wireless/mediatek/mt76/mt7615/usb_sdio.c

index 0b33df3..adbed37 100644 (file)
@@ -19,6 +19,7 @@ mt7663u_mcu_send_message(struct mt76_dev *mdev, struct sk_buff *skb,
 {
        struct mt7615_dev *dev = container_of(mdev, struct mt7615_dev, mt76);
        int ret, seq, ep;
+       u32 len;
 
        mutex_lock(&mdev->mcu.mutex);
 
@@ -28,7 +29,8 @@ mt7663u_mcu_send_message(struct mt76_dev *mdev, struct sk_buff *skb,
        else
                ep = MT_EP_OUT_AC_BE;
 
-       put_unaligned_le32(skb->len, skb_push(skb, sizeof(skb->len)));
+       len = skb->len;
+       put_unaligned_le32(len, skb_push(skb, sizeof(len)));
        ret = mt76_skb_adjust_pad(skb);
        if (ret < 0)
                goto out;
index 6dffdaa..294276e 100644 (file)
@@ -259,8 +259,11 @@ int mt7663_usb_sdio_tx_prepare_skb(struct mt76_dev *mdev, void *txwi_ptr,
        }
 
        mt7663_usb_sdio_write_txwi(dev, wcid, qid, sta, skb);
-       if (mt76_is_usb(mdev))
-               put_unaligned_le32(skb->len, skb_push(skb, sizeof(skb->len)));
+       if (mt76_is_usb(mdev)) {
+               u32 len = skb->len;
+
+               put_unaligned_le32(len, skb_push(skb, sizeof(len)));
+       }
 
        return mt76_skb_adjust_pad(skb);
 }