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 324/757] mt76: mt7915: fix possible memory leak in mt7915_mcu_add_beacon
    Date
    From: Lorenzo Bianconi <lorenzo@kernel.org>

    [ Upstream commit 071c8ce8e92a86b8bf78678e78eb4b79fdc16768 ]

    Release mcu message memory in case of failure in mt7915_mcu_add_beacon
    routine

    Fixes: e57b7901469fc ("mt76: add mac80211 driver for MT7915 PCIe-based chipsets")
    Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
    Signed-off-by: Felix Fietkau <nbd@nbd.name>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    .../net/wireless/mediatek/mt76/mt7915/mcu.c | 18 ++++++++++--------
    1 file changed, 10 insertions(+), 8 deletions(-)

    diff --git a/drivers/net/wireless/mediatek/mt76/mt7915/mcu.c b/drivers/net/wireless/mediatek/mt76/mt7915/mcu.c
    index eaed5ef054016..bfd87974a5796 100644
    --- a/drivers/net/wireless/mediatek/mt76/mt7915/mcu.c
    +++ b/drivers/net/wireless/mediatek/mt76/mt7915/mcu.c
    @@ -2335,14 +2335,6 @@ int mt7915_mcu_add_beacon(struct ieee80211_hw *hw,
    struct bss_info_bcn *bcn;
    int len = MT7915_BEACON_UPDATE_SIZE + MAX_BEACON_SIZE;

    - rskb = mt7915_mcu_alloc_sta_req(dev, mvif, NULL, len);
    - if (IS_ERR(rskb))
    - return PTR_ERR(rskb);
    -
    - tlv = mt7915_mcu_add_tlv(rskb, BSS_INFO_OFFLOAD, sizeof(*bcn));
    - bcn = (struct bss_info_bcn *)tlv;
    - bcn->enable = en;
    -
    skb = ieee80211_beacon_get_template(hw, vif, &offs);
    if (!skb)
    return -EINVAL;
    @@ -2353,6 +2345,16 @@ int mt7915_mcu_add_beacon(struct ieee80211_hw *hw,
    return -EINVAL;
    }

    + rskb = mt7915_mcu_alloc_sta_req(dev, mvif, NULL, len);
    + if (IS_ERR(rskb)) {
    + dev_kfree_skb(skb);
    + return PTR_ERR(rskb);
    + }
    +
    + tlv = mt7915_mcu_add_tlv(rskb, BSS_INFO_OFFLOAD, sizeof(*bcn));
    + bcn = (struct bss_info_bcn *)tlv;
    + bcn->enable = en;
    +
    if (mvif->band_idx) {
    info = IEEE80211_SKB_CB(skb);
    info->hw_queue |= MT_TX_HW_QUEUE_EXT_PHY;
    --
    2.25.1


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