Patch "net/mlx5e: Track xmit submission to PTP WQ after populating metadata map" has been added to the 6.6-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

    net/mlx5e: Track xmit submission to PTP WQ after populating metadata map

to the 6.6-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:
     net-mlx5e-track-xmit-submission-to-ptp-wq-after-popu.patch
and it can be found in the queue-6.6 subdirectory.

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



commit b3111e6b5454e3afd197749222f4d2509296d0ad
Author: Rahul Rameshbabu <rrameshbabu@xxxxxxxxxx>
Date:   Tue Nov 14 13:58:41 2023 -0800

    net/mlx5e: Track xmit submission to PTP WQ after populating metadata map
    
    [ Upstream commit 7e3f3ba97e6cc6fce5bf62df2ca06c8e59040167 ]
    
    Ensure the skb is available in metadata mapping to skbs before tracking the
    metadata index for detecting undelivered CQEs. If the metadata index is put
    in the tracking list before putting the skb in the map, the metadata index
    might be used for detecting undelivered CQEs before the relevant skb is
    available in the map, which can lead to a null-ptr-deref.
    
    Log:
        general protection fault, probably for non-canonical address 0xdffffc0000000005: 0000 [#1] SMP KASAN
        KASAN: null-ptr-deref in range [0x0000000000000028-0x000000000000002f]
        CPU: 0 PID: 1243 Comm: kworker/0:2 Not tainted 6.6.0-rc4+ #108
        Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS rel-1.13.0-0-gf21b5a4aeb02-prebuilt.qemu.org 04/01/2014
        Workqueue: events mlx5e_rx_dim_work [mlx5_core]
        RIP: 0010:mlx5e_ptp_napi_poll+0x9a4/0x2290 [mlx5_core]
        Code: 8c 24 38 cc ff ff 4c 8d 3c c1 4c 89 f9 48 c1 e9 03 42 80 3c 31 00 0f 85 97 0f 00 00 4d 8b 3f 49 8d 7f 28 48 89 f9 48 c1 e9 03 <42> 80 3c 31 00 0f 85 8b 0f 00 00 49 8b 47 28 48 85 c0 0f 84 05 07
        RSP: 0018:ffff8884d3c09c88 EFLAGS: 00010206
        RAX: 0000000000000069 RBX: ffff8881160349d8 RCX: 0000000000000005
        RDX: ffffed10218f48cf RSI: 0000000000000004 RDI: 0000000000000028
        RBP: ffff888122707700 R08: 0000000000000001 R09: ffffed109a781383
        R10: 0000000000000003 R11: 0000000000000003 R12: ffff88810c7a7a40
        R13: ffff888122707700 R14: dffffc0000000000 R15: 0000000000000000
        FS:  0000000000000000(0000) GS:ffff8884d3c00000(0000) knlGS:0000000000000000
        CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
        CR2: 00007f4f878dd6e0 CR3: 000000014d108002 CR4: 0000000000370eb0
        DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
        DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
        Call Trace:
        <IRQ>
        ? die_addr+0x3c/0xa0
        ? exc_general_protection+0x144/0x210
        ? asm_exc_general_protection+0x22/0x30
        ? mlx5e_ptp_napi_poll+0x9a4/0x2290 [mlx5_core]
        ? mlx5e_ptp_napi_poll+0x8f6/0x2290 [mlx5_core]
        __napi_poll.constprop.0+0xa4/0x580
        net_rx_action+0x460/0xb80
        ? _raw_spin_unlock_irqrestore+0x32/0x60
        ? __napi_poll.constprop.0+0x580/0x580
        ? tasklet_action_common.isra.0+0x2ef/0x760
        __do_softirq+0x26c/0x827
        irq_exit_rcu+0xc2/0x100
        common_interrupt+0x7f/0xa0
        </IRQ>
        <TASK>
        asm_common_interrupt+0x22/0x40
        RIP: 0010:__kmem_cache_alloc_node+0xb/0x330
        Code: 41 5d 41 5e 41 5f c3 8b 44 24 14 8b 4c 24 10 09 c8 eb d5 e8 b7 43 ca 01 0f 1f 80 00 00 00 00 0f 1f 44 00 00 55 48 89 e5 41 57 <41> 56 41 89 d6 41 55 41 89 f5 41 54 49 89 fc 53 48 83 e4 f0 48 83
        RSP: 0018:ffff88812c4079c0 EFLAGS: 00000246
        RAX: 1ffffffff083c7fe RBX: ffff888100042dc0 RCX: 0000000000000218
        RDX: 00000000ffffffff RSI: 0000000000000dc0 RDI: ffff888100042dc0
        RBP: ffff88812c4079c8 R08: ffffffffa0289f96 R09: ffffed1025880ea9
        R10: ffff888138839f80 R11: 0000000000000002 R12: 0000000000000dc0
        R13: 0000000000000100 R14: 000000000000008c R15: ffff8881271fc450
        ? cmd_exec+0x796/0x2200 [mlx5_core]
        kmalloc_trace+0x26/0xc0
        cmd_exec+0x796/0x2200 [mlx5_core]
        mlx5_cmd_do+0x22/0xc0 [mlx5_core]
        mlx5_cmd_exec+0x17/0x30 [mlx5_core]
        mlx5_core_modify_cq_moderation+0x139/0x1b0 [mlx5_core]
        ? mlx5_add_cq_to_tasklet+0x280/0x280 [mlx5_core]
        ? lockdep_set_lock_cmp_fn+0x190/0x190
        ? process_one_work+0x659/0x1220
        mlx5e_rx_dim_work+0x9d/0x100 [mlx5_core]
        process_one_work+0x730/0x1220
        ? lockdep_hardirqs_on_prepare+0x400/0x400
        ? max_active_store+0xf0/0xf0
        ? assign_work+0x168/0x240
        worker_thread+0x70f/0x12d0
        ? __kthread_parkme+0xd1/0x1d0
        ? process_one_work+0x1220/0x1220
        kthread+0x2d9/0x3b0
        ? kthread_complete_and_exit+0x20/0x20
        ret_from_fork+0x2d/0x70
        ? kthread_complete_and_exit+0x20/0x20
        ret_from_fork_asm+0x11/0x20
        </TASK>
        Modules linked in: xt_conntrack xt_MASQUERADE nf_conntrack_netlink nfnetlink xt_addrtype iptable_nat nf_nat br_netfilter rpcsec_gss_krb5 auth_rpcgss oid_registry overlay mlx5_ib ib_uverbs ib_core zram zsmalloc mlx5_core fuse
        ---[ end trace 0000000000000000 ]---
    
    Fixes: 3178308ad4ca ("net/mlx5e: Make tx_port_ts logic resilient to out-of-order CQEs")
    Signed-off-by: Rahul Rameshbabu <rrameshbabu@xxxxxxxxxx>
    Reviewed-by: Tariq Toukan <tariqt@xxxxxxxxxx>
    Signed-off-by: Saeed Mahameed <saeedm@xxxxxxxxxx>
    Link: https://lore.kernel.org/r/20231114215846.5902-11-saeed@xxxxxxxxxx
    Signed-off-by: Jakub Kicinski <kuba@xxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_tx.c b/drivers/net/ethernet/mellanox/mlx5/core/en_tx.c
index 19f2c25b05a0b..f0b506e562df3 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/en_tx.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en_tx.c
@@ -399,9 +399,9 @@ mlx5e_txwqe_complete(struct mlx5e_txqsq *sq, struct sk_buff *skb,
 		u8 metadata_index = be32_to_cpu(eseg->flow_table_metadata);
 
 		mlx5e_skb_cb_hwtstamp_init(skb);
-		mlx5e_ptpsq_track_metadata(sq->ptpsq, metadata_index);
 		mlx5e_ptp_metadata_map_put(&sq->ptpsq->metadata_map, skb,
 					   metadata_index);
+		mlx5e_ptpsq_track_metadata(sq->ptpsq, metadata_index);
 		if (!netif_tx_queue_stopped(sq->txq) &&
 		    mlx5e_ptpsq_metadata_freelist_empty(sq->ptpsq)) {
 			netif_tx_stop_queue(sq->txq);



[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