]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/blob - queue-4.4/bnxt_en-fix-aggregation-buffer-leak-under-oom-condition.patch
Linux 4.9.181
[thirdparty/kernel/stable-queue.git] / queue-4.4 / bnxt_en-fix-aggregation-buffer-leak-under-oom-condition.patch
1 From foo@baz Fri 31 May 2019 03:55:52 PM PDT
2 From: Michael Chan <michael.chan@broadcom.com>
3 Date: Wed, 22 May 2019 19:12:54 -0400
4 Subject: bnxt_en: Fix aggregation buffer leak under OOM condition.
5
6 From: Michael Chan <michael.chan@broadcom.com>
7
8 [ Upstream commit 296d5b54163964b7ae536b8b57dfbd21d4e868e1 ]
9
10 For every RX packet, the driver replenishes all buffers used for that
11 packet and puts them back into the RX ring and RX aggregation ring.
12 In one code path where the RX packet has one RX buffer and one or more
13 aggregation buffers, we missed recycling the aggregation buffer(s) if
14 we are unable to allocate a new SKB buffer. This leads to the
15 aggregation ring slowly running out of buffers over time. Fix it
16 by properly recycling the aggregation buffers.
17
18 Fixes: c0c050c58d84 ("bnxt_en: New Broadcom ethernet driver.")
19 Reported-by: Rakesh Hemnani <rhemnani@fb.com>
20 Signed-off-by: Michael Chan <michael.chan@broadcom.com>
21 Signed-off-by: David S. Miller <davem@davemloft.net>
22 Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
23 ---
24 drivers/net/ethernet/broadcom/bnxt/bnxt.c | 2 ++
25 1 file changed, 2 insertions(+)
26
27 --- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c
28 +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
29 @@ -1140,6 +1140,8 @@ static int bnxt_rx_pkt(struct bnxt *bp,
30 skb = bnxt_copy_skb(bnapi, data, len, dma_addr);
31 bnxt_reuse_rx_data(rxr, cons, data);
32 if (!skb) {
33 + if (agg_bufs)
34 + bnxt_reuse_rx_agg_bufs(bnapi, cp_cons, agg_bufs);
35 rc = -ENOMEM;
36 goto next_rx;
37 }