151 lines
7.2 KiB
Diff
151 lines
7.2 KiB
Diff
From 0dc330615eafebf537f5880633e3d2d40bd67b54 Mon Sep 17 00:00:00 2001
|
|
From: Kamal Heib <kheib@redhat.com>
|
|
Date: Wed, 22 Apr 2026 09:53:11 -0400
|
|
Subject: [PATCH] net/mlx5: Fix crash when moving to switchdev mode
|
|
|
|
JIRA: https://redhat.atlassian.net/browse/RHEL-169055
|
|
|
|
commit 24b2795f9683e092dc22a68f487e7aaaf2ddafea
|
|
Author: Patrisious Haddad <phaddad@nvidia.com>
|
|
Date: Thu Mar 5 16:26:30 2026 +0200
|
|
|
|
net/mlx5: Fix crash when moving to switchdev mode
|
|
|
|
When moving to switchdev mode when the device doesn't support IPsec,
|
|
we try to clean up the IPsec resources anyway which causes the crash
|
|
below, fix that by correctly checking for IPsec support before trying
|
|
to clean up its resources.
|
|
|
|
[27642.515799] WARNING: arch/x86/mm/fault.c:1276 at
|
|
do_user_addr_fault+0x18a/0x680, CPU#4: devlink/6490
|
|
[27642.517159] Modules linked in: xt_conntrack xt_MASQUERADE
|
|
ip6table_nat ip6table_filter ip6_tables iptable_nat nf_nat xt_addrtype
|
|
rpcsec_gss_krb5 auth_rpcgss oid_registry overlay mlx5_fwctl nfnetlink
|
|
zram zsmalloc mlx5_ib fuse rpcrdma rdma_ucm ib_uverbs ib_iser libiscsi
|
|
scsi_transport_iscsi ib_umad rdma_cm ib_ipoib iw_cm ib_cm mlx5_core
|
|
ib_core
|
|
[27642.521358] CPU: 4 UID: 0 PID: 6490 Comm: devlink Not tainted
|
|
6.19.0-rc5_for_upstream_min_debug_2026_01_14_16_47 #1 NONE
|
|
[27642.522923] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS
|
|
rel-1.16.3-0-ga6ed6b701f0a-prebuilt.qemu.org 04/01/2014
|
|
[27642.524528] RIP: 0010:do_user_addr_fault+0x18a/0x680
|
|
[27642.525362] Code: ff 0f 84 75 03 00 00 48 89 ee 4c 89 e7 e8 5e b9 22
|
|
00 49 89 c0 48 85 c0 0f 84 a8 02 00 00 f7 c3 60 80 00 00 74 22 31 c9 eb
|
|
ae <0f> 0b 48 83 c4 10 48 89 ea 48 89 de 4c 89 f7 5b 5d 41 5c 41 5d
|
|
41
|
|
[27642.528166] RSP: 0018:ffff88810770f6b8 EFLAGS: 00010046
|
|
[27642.529038] RAX: 0000000000000000 RBX: 0000000000000002 RCX:
|
|
ffff88810b980f00
|
|
[27642.530158] RDX: 00000000000000a0 RSI: 0000000000000002 RDI:
|
|
ffff88810770f728
|
|
[27642.531270] RBP: 00000000000000a0 R08: 0000000000000000 R09:
|
|
0000000000000000
|
|
[27642.532383] R10: 0000000000000000 R11: 0000000000000000 R12:
|
|
ffff888103f3c4c0
|
|
[27642.533499] R13: 0000000000000000 R14: ffff88810770f728 R15:
|
|
0000000000000000
|
|
[27642.534614] FS: 00007f197c741740(0000) GS:ffff88856a94c000(0000)
|
|
knlGS:0000000000000000
|
|
[27642.535915] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
|
|
[27642.536858] CR2: 00000000000000a0 CR3: 000000011334c003 CR4:
|
|
0000000000172eb0
|
|
[27642.537982] Call Trace:
|
|
[27642.538466] <TASK>
|
|
[27642.538907] exc_page_fault+0x76/0x140
|
|
[27642.539583] asm_exc_page_fault+0x22/0x30
|
|
[27642.540282] RIP: 0010:_raw_spin_lock_irqsave+0x10/0x30
|
|
[27642.541134] Code: 07 85 c0 75 11 ba ff 00 00 00 f0 0f b1 17 75 06 b8
|
|
01 00 00 00 c3 31 c0 c3 90 0f 1f 44 00 00 53 9c 5b fa 31 c0 ba 01 00 00
|
|
00 <f0> 0f b1 17 75 05 48 89 d8 5b c3 89 c6 e8 7e 02 00 00 48 89 d8
|
|
5b
|
|
[27642.543936] RSP: 0018:ffff88810770f7d8 EFLAGS: 00010046
|
|
[27642.544803] RAX: 0000000000000000 RBX: 0000000000000202 RCX:
|
|
ffff888113ad96d8
|
|
[27642.545916] RDX: 0000000000000001 RSI: ffff88810770f818 RDI:
|
|
00000000000000a0
|
|
[27642.547027] RBP: 0000000000000098 R08: 0000000000000400 R09:
|
|
ffff88810b980f00
|
|
[27642.548140] R10: 0000000000000001 R11: ffff888101845a80 R12:
|
|
00000000000000a8
|
|
[27642.549263] R13: ffffffffa02a9060 R14: 00000000000000a0 R15:
|
|
ffff8881130d8a40
|
|
[27642.550379] complete_all+0x20/0x90
|
|
[27642.551010] mlx5e_ipsec_disable_events+0xb6/0xf0 [mlx5_core]
|
|
[27642.552022] mlx5e_nic_disable+0x12d/0x220 [mlx5_core]
|
|
[27642.552929] mlx5e_detach_netdev+0x66/0xf0 [mlx5_core]
|
|
[27642.553822] mlx5e_netdev_change_profile+0x5b/0x120 [mlx5_core]
|
|
[27642.554821] mlx5e_vport_rep_load+0x419/0x590 [mlx5_core]
|
|
[27642.555757] ? xa_load+0x53/0x90
|
|
[27642.556361] __esw_offloads_load_rep+0x54/0x70 [mlx5_core]
|
|
[27642.557328] mlx5_esw_offloads_rep_load+0x45/0xd0 [mlx5_core]
|
|
[27642.558320] esw_offloads_enable+0xb4b/0xc90 [mlx5_core]
|
|
[27642.559247] mlx5_eswitch_enable_locked+0x34e/0x4f0 [mlx5_core]
|
|
[27642.560257] ? mlx5_rescan_drivers_locked+0x222/0x2d0 [mlx5_core]
|
|
[27642.561284] mlx5_devlink_eswitch_mode_set+0x5ac/0x9c0 [mlx5_core]
|
|
[27642.562334] ? devlink_rate_set_ops_supported+0x21/0x3a0
|
|
[27642.563220] devlink_nl_eswitch_set_doit+0x67/0xe0
|
|
[27642.564026] genl_family_rcv_msg_doit+0xe0/0x130
|
|
[27642.564816] genl_rcv_msg+0x183/0x290
|
|
[27642.565466] ? __devlink_nl_pre_doit.isra.0+0x160/0x160
|
|
[27642.566329] ? devlink_nl_eswitch_get_doit+0x290/0x290
|
|
[27642.567181] ? devlink_nl_pre_doit_parent_dev_optional+0x20/0x20
|
|
[27642.568147] ? genl_family_rcv_msg_dumpit+0xf0/0xf0
|
|
[27642.568966] netlink_rcv_skb+0x4b/0xf0
|
|
[27642.569629] genl_rcv+0x24/0x40
|
|
[27642.570215] netlink_unicast+0x255/0x380
|
|
[27642.570901] ? __alloc_skb+0xfa/0x1e0
|
|
[27642.571560] netlink_sendmsg+0x1f3/0x420
|
|
[27642.572249] __sock_sendmsg+0x38/0x60
|
|
[27642.572911] __sys_sendto+0x119/0x180
|
|
[27642.573561] ? __sys_recvmsg+0x5c/0xb0
|
|
[27642.574227] __x64_sys_sendto+0x20/0x30
|
|
[27642.574904] do_syscall_64+0x55/0xc10
|
|
[27642.575554] entry_SYSCALL_64_after_hwframe+0x4b/0x53
|
|
[27642.576391] RIP: 0033:0x7f197c85e807
|
|
[27642.577050] Code: c7 c0 ff ff ff ff eb be 66 2e 0f 1f 84 00 00 00 00
|
|
00 90 f3 0f 1e fa 80 3d 45 08 0d 00 00 41 89 ca 74 10 b8 2c 00 00 00 0f
|
|
05 <48> 3d 00 f0 ff ff 77 69 c3 55 48 89 e5 53 48 83 ec 38 44 89 4d
|
|
d0
|
|
[27642.579846] RSP: 002b:00007ffebd4e2248 EFLAGS: 00000202 ORIG_RAX:
|
|
000000000000002c
|
|
[27642.581082] RAX: ffffffffffffffda RBX: 000055cfcd9cd2a0 RCX:
|
|
00007f197c85e807
|
|
[27642.582200] RDX: 0000000000000038 RSI: 000055cfcd9cd490 RDI:
|
|
0000000000000003
|
|
[27642.583320] RBP: 00007ffebd4e2290 R08: 00007f197c942200 R09:
|
|
000000000000000c
|
|
[27642.584437] R10: 0000000000000000 R11: 0000000000000202 R12:
|
|
0000000000000000
|
|
[27642.585555] R13: 000055cfcd9cd490 R14: 00007ffebd4e45d1 R15:
|
|
000055cfcd9cd2a0
|
|
[27642.586671] </TASK>
|
|
[27642.587121] ---[ end trace 0000000000000000 ]---
|
|
[27642.587910] BUG: kernel NULL pointer dereference, address:
|
|
00000000000000a0
|
|
|
|
Fixes: 664f76be38a1 ("net/mlx5: Fix IPsec cleanup over MPV device")
|
|
Signed-off-by: Patrisious Haddad <phaddad@nvidia.com>
|
|
Reviewed-by: Leon Romanovsky <leonro@nvidia.com>
|
|
Signed-off-by: Tariq Toukan <tariqt@nvidia.com>
|
|
Link: https://patch.msgid.link/20260305142634.1813208-2-tariqt@nvidia.com
|
|
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
|
|
|
Signed-off-by: Kamal Heib <kheib@redhat.com>
|
|
|
|
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c b/drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c
|
|
index feef86fff4bf..91cfabc45032 100644
|
|
--- a/drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c
|
|
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c
|
|
@@ -2912,7 +2912,7 @@ void mlx5e_ipsec_disable_events(struct mlx5e_priv *priv)
|
|
goto out;
|
|
|
|
peer_priv = mlx5_devcom_get_next_peer_data(priv->devcom, &tmp);
|
|
- if (peer_priv)
|
|
+ if (peer_priv && peer_priv->ipsec)
|
|
complete_all(&peer_priv->ipsec->comp);
|
|
|
|
mlx5_devcom_for_each_peer_end(priv->devcom);
|
|
--
|
|
2.50.1 (Apple Git-155)
|
|
|