lkml.org 
[lkml]   [2020]   [Oct]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.9 321/757] mt76: mt7663u: fix dma header initialization
    Date
    From: Lorenzo Bianconi <lorenzo@kernel.org>

    [ Upstream commit 8da40d698111ad27b03afc40d67843e3073395e7 ]

    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>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/net/wireless/mediatek/mt76/mt7615/usb_mcu.c | 4 +++-
    drivers/net/wireless/mediatek/mt76/mt7615/usb_sdio.c | 7 +++++--
    2 files changed, 8 insertions(+), 3 deletions(-)

    diff --git a/drivers/net/wireless/mediatek/mt76/mt7615/usb_mcu.c b/drivers/net/wireless/mediatek/mt76/mt7615/usb_mcu.c
    index 0b33df3e3bfec..adbed373798e8 100644
    --- a/drivers/net/wireless/mediatek/mt76/mt7615/usb_mcu.c
    +++ b/drivers/net/wireless/mediatek/mt76/mt7615/usb_mcu.c
    @@ -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;
    diff --git a/drivers/net/wireless/mediatek/mt76/mt7615/usb_sdio.c b/drivers/net/wireless/mediatek/mt76/mt7615/usb_sdio.c
    index 6dffdaaa9ad53..294276e2280d2 100644
    --- a/drivers/net/wireless/mediatek/mt76/mt7615/usb_sdio.c
    +++ b/drivers/net/wireless/mediatek/mt76/mt7615/usb_sdio.c
    @@ -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);
    }
    --
    2.25.1


    \
     
     \ /
      Last update: 2020-10-27 17:10    [W:4.020 / U:0.172 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site