mirror-linux/include/linux/mlx5
Jianbo Liu 6b4be64fd9 net/mlx5e: Harden uplink netdev access against device unbind
The function mlx5_uplink_netdev_get() gets the uplink netdevice
pointer from mdev->mlx5e_res.uplink_netdev. However, the netdevice can
be removed and its pointer cleared when unbound from the mlx5_core.eth
driver. This results in a NULL pointer, causing a kernel panic.

 BUG: unable to handle page fault for address: 0000000000001300
 at RIP: 0010:mlx5e_vport_rep_load+0x22a/0x270 [mlx5_core]
 Call Trace:
  <TASK>
  mlx5_esw_offloads_rep_load+0x68/0xe0 [mlx5_core]
  esw_offloads_enable+0x593/0x910 [mlx5_core]
  mlx5_eswitch_enable_locked+0x341/0x420 [mlx5_core]
  mlx5_devlink_eswitch_mode_set+0x17e/0x3a0 [mlx5_core]
  devlink_nl_eswitch_set_doit+0x60/0xd0
  genl_family_rcv_msg_doit+0xe0/0x130
  genl_rcv_msg+0x183/0x290
  netlink_rcv_skb+0x4b/0xf0
  genl_rcv+0x24/0x40
  netlink_unicast+0x255/0x380
  netlink_sendmsg+0x1f3/0x420
  __sock_sendmsg+0x38/0x60
  __sys_sendto+0x119/0x180
  do_syscall_64+0x53/0x1d0
  entry_SYSCALL_64_after_hwframe+0x4b/0x53

Ensure the pointer is valid before use by checking it for NULL. If it
is valid, immediately call netdev_hold() to take a reference, and
preventing the netdevice from being freed while it is in use.

Fixes: 7a9fb35e8c ("net/mlx5e: Do not reload ethernet ports when changing eswitch mode")
Signed-off-by: Jianbo Liu <jianbol@nvidia.com>
Reviewed-by: Cosmin Ratiu <cratiu@nvidia.com>
Reviewed-by: Jiri Pirko <jiri@nvidia.com>
Reviewed-by: Dragos Tatulea <dtatulea@nvidia.com>
Signed-off-by: Tariq Toukan <tariqt@nvidia.com>
Link: https://patch.msgid.link/1757939074-617281-2-git-send-email-tariqt@nvidia.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
2025-09-16 17:19:11 -07:00
..
cq.h
device.h RDMA/mlx5: Fix UMR modifying of mkey page size 2025-07-13 02:57:30 -04:00
doorbell.h
driver.h net/mlx5e: Harden uplink netdev access against device unbind 2025-09-16 17:19:11 -07:00
eq.h
eswitch.h net/mlx5e: Add correct match to check IPSec syndromes for switchdev mode 2025-02-24 18:14:32 -08:00
fs.h net/mlx5: fs, add multiple prios to RDMA TRANSPORT steering domain 2025-06-25 03:55:53 -04:00
fs_helpers.h
macsec.h
mlx5_ifc.h net/mlx5: Expose IFC bits for TPH 2025-07-23 01:27:32 -04:00
mlx5_ifc_fpga.h
mlx5_ifc_vdpa.h
mpfs.h
port.h net/mlx5: Relocate function declarations from port.h to mlx5_core.h 2025-03-06 17:53:34 -08:00
qp.h net/mlx5: Added missing definitions in preparation for HW Steering 2024-09-09 11:10:04 -07:00
rsc_dump.h
transobj.h
vport.h