]>
Commit | Line | Data |
---|---|---|
3f162c2c GKH |
1 | From foo@baz Fri 31 May 2019 03:24:14 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 | @@ -1583,6 +1583,8 @@ static int bnxt_rx_pkt(struct bnxt *bp, | |
30 | skb = bnxt_copy_skb(bnapi, data_ptr, 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 | } |