| From 056b679b4fe88041cbe0e83a3898eee772822837 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Sun, 1 Nov 2020 12:30:42 -0500 |
| Subject: ionic: no rx flush in deinit |
| |
| [ Upstream commit 43ecf7b46f2688fd37909801aee264f288b3917b ] |
| |
| Kmemleak pointed out to us that ionic_rx_flush() is sending |
| skbs into napi_gro_XXX with a disabled napi context, and these |
| end up getting lost and leaked. We can safely remove the flush. |
| |
| Fixes: 0f3154e6bcb3 ("ionic: Add Tx and Rx handling") |
| Signed-off-by: Shannon Nelson <snelson@pensando.io> |
| Signed-off-by: Jakub Kicinski <kuba@kernel.org> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/net/ethernet/pensando/ionic/ionic_lif.c | 1 - |
| drivers/net/ethernet/pensando/ionic/ionic_txrx.c | 13 ------------- |
| drivers/net/ethernet/pensando/ionic/ionic_txrx.h | 1 - |
| 3 files changed, 15 deletions(-) |
| |
| diff --git a/drivers/net/ethernet/pensando/ionic/ionic_lif.c b/drivers/net/ethernet/pensando/ionic/ionic_lif.c |
| index 26988ad7ec979..8867d4ac871c1 100644 |
| --- a/drivers/net/ethernet/pensando/ionic/ionic_lif.c |
| +++ b/drivers/net/ethernet/pensando/ionic/ionic_lif.c |
| @@ -1512,7 +1512,6 @@ static void ionic_txrx_deinit(struct ionic_lif *lif) |
| if (lif->rxqcqs) { |
| for (i = 0; i < lif->nxqs; i++) { |
| ionic_lif_qcq_deinit(lif, lif->rxqcqs[i].qcq); |
| - ionic_rx_flush(&lif->rxqcqs[i].qcq->cq); |
| ionic_rx_empty(&lif->rxqcqs[i].qcq->q); |
| } |
| } |
| diff --git a/drivers/net/ethernet/pensando/ionic/ionic_txrx.c b/drivers/net/ethernet/pensando/ionic/ionic_txrx.c |
| index def65fee27b5a..39e85870c15e9 100644 |
| --- a/drivers/net/ethernet/pensando/ionic/ionic_txrx.c |
| +++ b/drivers/net/ethernet/pensando/ionic/ionic_txrx.c |
| @@ -253,19 +253,6 @@ static bool ionic_rx_service(struct ionic_cq *cq, struct ionic_cq_info *cq_info) |
| return true; |
| } |
| |
| -void ionic_rx_flush(struct ionic_cq *cq) |
| -{ |
| - struct ionic_dev *idev = &cq->lif->ionic->idev; |
| - u32 work_done; |
| - |
| - work_done = ionic_cq_service(cq, cq->num_descs, |
| - ionic_rx_service, NULL, NULL); |
| - |
| - if (work_done) |
| - ionic_intr_credits(idev->intr_ctrl, cq->bound_intr->index, |
| - work_done, IONIC_INTR_CRED_RESET_COALESCE); |
| -} |
| - |
| static struct page *ionic_rx_page_alloc(struct ionic_queue *q, |
| dma_addr_t *dma_addr) |
| { |
| diff --git a/drivers/net/ethernet/pensando/ionic/ionic_txrx.h b/drivers/net/ethernet/pensando/ionic/ionic_txrx.h |
| index a5883be0413f6..7667b72232b8a 100644 |
| --- a/drivers/net/ethernet/pensando/ionic/ionic_txrx.h |
| +++ b/drivers/net/ethernet/pensando/ionic/ionic_txrx.h |
| @@ -4,7 +4,6 @@ |
| #ifndef _IONIC_TXRX_H_ |
| #define _IONIC_TXRX_H_ |
| |
| -void ionic_rx_flush(struct ionic_cq *cq); |
| void ionic_tx_flush(struct ionic_cq *cq); |
| |
| void ionic_rx_fill(struct ionic_queue *q); |
| -- |
| 2.27.0 |
| |