CVE-2023-53393
Severity CVSS v4.0:
Pending analysis
Type:
Unavailable / Other
Publication date:
18/09/2025
Last modified:
19/09/2025
Description
In the Linux kernel, the following vulnerability has been resolved:<br />
<br />
RDMA/mlx5: Fix mlx5_ib_get_hw_stats when used for device<br />
<br />
Currently, when mlx5_ib_get_hw_stats() is used for device (port_num = 0),<br />
there is a special handling in order to use the correct counters, but,<br />
port_num is being passed down the stack without any change. Also, some<br />
functions assume that port_num >=1. As a result, the following oops can<br />
occur.<br />
<br />
BUG: unable to handle page fault for address: ffff89510294f1a8<br />
#PF: supervisor write access in kernel mode<br />
#PF: error_code(0x0002) - not-present page<br />
PGD 0 P4D 0<br />
Oops: 0002 [#1] SMP<br />
CPU: 8 PID: 1382 Comm: devlink Tainted: G W 6.1.0-rc4_for_upstream_base_2022_11_10_16_12 #1<br />
Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS rel-1.13.0-0-gf21b5a4aeb02-prebuilt.qemu.org 04/01/2014<br />
RIP: 0010:_raw_spin_lock+0xc/0x20<br />
Call Trace:<br />
<br />
mlx5_ib_get_native_port_mdev+0x73/0xe0 [mlx5_ib]<br />
do_get_hw_stats.constprop.0+0x109/0x160 [mlx5_ib]<br />
mlx5_ib_get_hw_stats+0xad/0x180 [mlx5_ib]<br />
ib_setup_device_attrs+0xf0/0x290 [ib_core]<br />
ib_register_device+0x3bb/0x510 [ib_core]<br />
? atomic_notifier_chain_register+0x67/0x80<br />
__mlx5_ib_add+0x2b/0x80 [mlx5_ib]<br />
mlx5r_probe+0xb8/0x150 [mlx5_ib]<br />
? auxiliary_match_id+0x6a/0x90<br />
auxiliary_bus_probe+0x3c/0x70<br />
? driver_sysfs_add+0x6b/0x90<br />
really_probe+0xcd/0x380<br />
__driver_probe_device+0x80/0x170<br />
driver_probe_device+0x1e/0x90<br />
__device_attach_driver+0x7d/0x100<br />
? driver_allows_async_probing+0x60/0x60<br />
? driver_allows_async_probing+0x60/0x60<br />
bus_for_each_drv+0x7b/0xc0<br />
__device_attach+0xbc/0x200<br />
bus_probe_device+0x87/0xa0<br />
device_add+0x404/0x940<br />
? dev_set_name+0x53/0x70<br />
__auxiliary_device_add+0x43/0x60<br />
add_adev+0x99/0xe0 [mlx5_core]<br />
mlx5_attach_device+0xc8/0x120 [mlx5_core]<br />
mlx5_load_one_devl_locked+0xb2/0xe0 [mlx5_core]<br />
devlink_reload+0x133/0x250<br />
devlink_nl_cmd_reload+0x480/0x570<br />
? devlink_nl_pre_doit+0x44/0x2b0<br />
genl_family_rcv_msg_doit.isra.0+0xc2/0x110<br />
genl_rcv_msg+0x180/0x2b0<br />
? devlink_nl_cmd_region_read_dumpit+0x540/0x540<br />
? devlink_reload+0x250/0x250<br />
? devlink_put+0x50/0x50<br />
? genl_family_rcv_msg_doit.isra.0+0x110/0x110<br />
netlink_rcv_skb+0x54/0x100<br />
genl_rcv+0x24/0x40<br />
netlink_unicast+0x1f6/0x2c0<br />
netlink_sendmsg+0x237/0x490<br />
sock_sendmsg+0x33/0x40<br />
__sys_sendto+0x103/0x160<br />
? handle_mm_fault+0x10e/0x290<br />
? do_user_addr_fault+0x1c0/0x5f0<br />
__x64_sys_sendto+0x25/0x30<br />
do_syscall_64+0x3d/0x90<br />
entry_SYSCALL_64_after_hwframe+0x46/0xb0<br />
<br />
Fix it by setting port_num to 1 in order to get device status and remove<br />
unused variable.