Patch "cxgb4: Properly lock TX queue for the selftest." has been added to the 6.1-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    cxgb4: Properly lock TX queue for the selftest.

to the 6.1-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     cxgb4-properly-lock-tx-queue-for-the-selftest.patch
and it can be found in the queue-6.1 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit e4755155cb8b28642dcfee72be12b87b78e4c743
Author: Sebastian Andrzej Siewior <bigeasy@xxxxxxxxxxxxx>
Date:   Mon Apr 29 11:11:47 2024 +0200

    cxgb4: Properly lock TX queue for the selftest.
    
    [ Upstream commit 9067eccdd7849dd120d5495dbd5a686fa6ed2c1a ]
    
    The selftest for the driver sends a dummy packet and checks if the
    packet will be received properly as it should be. The regular TX path
    and the selftest can use the same network queue so locking is required
    and was missing in the selftest path. This was addressed in the commit
    cited below.
    Unfortunately locking the TX queue requires BH to be disabled which is
    not the case in selftest path which is invoked in process context.
    Lockdep should be complaining about this.
    
    Use __netif_tx_lock_bh() for TX queue locking.
    
    Fixes: c650e04898072 ("cxgb4: Fix race between loopback and normal Tx path")
    Reported-by: "John B. Wyatt IV" <jwyatt@xxxxxxxxxx>
    Closes: https://lore.kernel.org/all/Zic0ot5aGgR-V4Ks@thinkpad2021/
    Signed-off-by: Sebastian Andrzej Siewior <bigeasy@xxxxxxxxxxxxx>
    Link: https://lore.kernel.org/r/20240429091147.YWAaal4v@xxxxxxxxxxxxx
    Signed-off-by: Jakub Kicinski <kuba@xxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/net/ethernet/chelsio/cxgb4/sge.c b/drivers/net/ethernet/chelsio/cxgb4/sge.c
index 46809e2d94ee0..4809d9eae6ca5 100644
--- a/drivers/net/ethernet/chelsio/cxgb4/sge.c
+++ b/drivers/net/ethernet/chelsio/cxgb4/sge.c
@@ -2684,12 +2684,12 @@ int cxgb4_selftest_lb_pkt(struct net_device *netdev)
 	lb->loopback = 1;
 
 	q = &adap->sge.ethtxq[pi->first_qset];
-	__netif_tx_lock(q->txq, smp_processor_id());
+	__netif_tx_lock_bh(q->txq);
 
 	reclaim_completed_tx(adap, &q->q, -1, true);
 	credits = txq_avail(&q->q) - ndesc;
 	if (unlikely(credits < 0)) {
-		__netif_tx_unlock(q->txq);
+		__netif_tx_unlock_bh(q->txq);
 		return -ENOMEM;
 	}
 
@@ -2724,7 +2724,7 @@ int cxgb4_selftest_lb_pkt(struct net_device *netdev)
 	init_completion(&lb->completion);
 	txq_advance(&q->q, ndesc);
 	cxgb4_ring_tx_db(adap, &q->q, ndesc);
-	__netif_tx_unlock(q->txq);
+	__netif_tx_unlock_bh(q->txq);
 
 	/* wait for the pkt to return */
 	ret = wait_for_completion_timeout(&lb->completion, 10 * HZ);




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux