Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1491877

[PATCH V2 4.9] brcmfmac: use correct skb freeing helper when deleting flowring

From Rafał Miłecki <zajec5@gmail.com>
Newsgroups linux.kernel
Subject [PATCH V2 4.9] brcmfmac: use correct skb freeing helper when deleting flowring
Date 2016-09-27 14:20 +0200
Message-ID <slZwB-YB-13@gated-at.bofh.it> (permalink)
References <slWIp-7G9-3@gated-at.bofh.it>
Organization linux.* mail to news gateway

Show all headers | View raw


From: Rafał Miłecki <rafal@milecki.pl>

Flowrings contain skbs waiting for transmission that were passed to us
by netif. It means we checked every one of them looking for 802.1x
Ethernet type. When deleting flowring we have to use freeing function
that will check for 802.1x type as well.

Freeing skbs without a proper check was leading to counter not being
properly decreased. This was triggering a WARNING every time
brcmf_netdev_wait_pend8021x was called.

Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
Acked-by: Arend van Spriel <arend@broadcom.com>
Cc: stable@vger.kernel.org # 4.5+
---
V2: Add Cc for stable 4.5+. It doesn't apply cleanly to 4.4 and is not
    possible for 4.3- due to missing brcmf_get_ifp.
---
 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c
index b16b367..d0b738d 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c
@@ -234,13 +234,20 @@ static void brcmf_flowring_block(struct brcmf_flowring *flow, u16 flowid,
 
 void brcmf_flowring_delete(struct brcmf_flowring *flow, u16 flowid)
 {
+	struct brcmf_bus *bus_if = dev_get_drvdata(flow->dev);
 	struct brcmf_flowring_ring *ring;
+	struct brcmf_if *ifp;
 	u16 hash_idx;
+	u8 ifidx;
 	struct sk_buff *skb;
 
 	ring = flow->rings[flowid];
 	if (!ring)
 		return;
+
+	ifidx = brcmf_flowring_ifidx_get(flow, flowid);
+	ifp = brcmf_get_ifp(bus_if->drvr, ifidx);
+
 	brcmf_flowring_block(flow, flowid, false);
 	hash_idx = ring->hash_id;
 	flow->hash[hash_idx].ifidx = BRCMF_FLOWRING_INVALID_IFIDX;
@@ -249,7 +256,7 @@ void brcmf_flowring_delete(struct brcmf_flowring *flow, u16 flowid)
 
 	skb = skb_dequeue(&ring->skblist);
 	while (skb) {
-		brcmu_pkt_buf_free_skb(skb);
+		brcmf_txfinalize(ifp, skb, false);
 		skb = skb_dequeue(&ring->skblist);
 	}
 
-- 
2.9.3

Back to linux.kernel | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

[PATCH 4.9] brcmfmac: use correct skb freeing helper when deleting flowring Rafał Miłecki <zajec5@gmail.com> - 2016-09-27 11:20 +0200
  Re: [PATCH 4.9] brcmfmac: use correct skb freeing helper when  deleting flowring Arend Van Spriel <arend.vanspriel@broadcom.com> - 2016-09-27 12:10 +0200
    Re: [PATCH 4.9] brcmfmac: use correct skb freeing helper when deleting flowring Kalle Valo <kvalo@codeaurora.org> - 2016-09-27 13:30 +0200
      Re: [PATCH 4.9] brcmfmac: use correct skb freeing helper when  deleting flowring Arend Van Spriel <arend.vanspriel@broadcom.com> - 2016-09-27 13:40 +0200
      Re: [PATCH 4.9] brcmfmac: use correct skb freeing helper when  deleting flowring Rafał Miłecki <zajec5@gmail.com> - 2016-09-27 13:50 +0200
        Re: [PATCH 4.9] brcmfmac: use correct skb freeing helper when  deleting flowring Rafał Miłecki <zajec5@gmail.com> - 2016-09-27 14:00 +0200
          Re: [PATCH 4.9] brcmfmac: use correct skb freeing helper when  deleting flowring Rafał Miłecki <zajec5@gmail.com> - 2016-09-27 14:10 +0200
          Re: [PATCH 4.9] brcmfmac: use correct skb freeing helper when  deleting flowring Arend Van Spriel <arend.vanspriel@broadcom.com> - 2016-09-27 14:10 +0200
          Re: [PATCH 4.9] brcmfmac: use correct skb freeing helper when deleting flowring Kalle Valo <kvalo@codeaurora.org> - 2016-09-27 14:10 +0200
  [PATCH V2 4.9] brcmfmac: use correct skb freeing helper when deleting flowring Rafał Miłecki <zajec5@gmail.com> - 2016-09-27 14:20 +0200
    Re: [V2,  4.9] brcmfmac: use correct skb freeing helper when deleting flowring Kalle Valo <kvalo@codeaurora.org> - 2016-09-27 17:50 +0200

csiph-web