]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
qede: Add missing Status-block free
authorSudarsana Reddy Kalluru <Sudarsana.Kalluru@cavium.com>
Sun, 21 May 2017 09:10:54 +0000 (12:10 +0300)
committerChuck Anderson <chuck.anderson@oracle.com>
Tue, 19 Sep 2017 05:32:08 +0000 (22:32 -0700)
Orabug: 26783820

When destroying the datapath channels, qede doesn't notify qed of the
released status blocks which were acquired during the initialization.

Signed-off-by: Sudarsana Reddy Kalluru <Sudarsana.Kalluru@cavium.com>
Signed-off-by: Yuval Mintz <Yuval.Mintz@cavium.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
[ Upstream commit 71851ea5fae7e01fe66f4f820bea2ef6c6534a37 ]
Signed-off-by: Somasundaram Krishnasamy <somasundaram.krishnasamy@oracle.com>
drivers/net/ethernet/qlogic/qede/qede_main.c

index 8463afa92ab6322ad9974bf3b0b8955c2ced7ea1..76e0d2fbd41556877f3439c2ea697f5accc23540 100644 (file)
@@ -1122,12 +1122,15 @@ static int qede_set_num_queues(struct qede_dev *edev)
        return rc;
 }
 
-static void qede_free_mem_sb(struct qede_dev *edev,
-                            struct qed_sb_info *sb_info)
+static void qede_free_mem_sb(struct qede_dev *edev, struct qed_sb_info *sb_info,
+                            u16 sb_id)
 {
-       if (sb_info->sb_virt)
+       if (sb_info->sb_virt) {
+               edev->ops->common->sb_release(edev->cdev, sb_info, sb_id);
                dma_free_coherent(&edev->pdev->dev, sizeof(*sb_info->sb_virt),
                                  (void *)sb_info->sb_virt, sb_info->sb_phys);
+               memset(sb_info, 0, sizeof(*sb_info));
+       }
 }
 
 /* This function allocates fast-path status block memory */
@@ -1366,7 +1369,7 @@ err:
 /* This function frees all memory of a single fp */
 static void qede_free_mem_fp(struct qede_dev *edev, struct qede_fastpath *fp)
 {
-       qede_free_mem_sb(edev, fp->sb_info);
+       qede_free_mem_sb(edev, fp->sb_info, fp->id);
 
        if (fp->type & QEDE_FASTPATH_RX)
                qede_free_mem_rxq(edev, fp->rxq);