CVE-2023-53079

Summary

In the Linux kernel, the following vulnerability has been resolved:

net/mlx5: Fix steering rules cleanup

vport's mc, uc and multicast rules are not deleted in teardown path when EEH happens. Since the vport's promisc settings(uc, mc and all) in firmware are reset after EEH, mlx5 driver will try to delete the above rules in the initialization path. This cause kernel crash because these software rules are no longer valid.

Fix by nullifying these rules right after delete to avoid accessing any dangling pointers.

Call Trace: __list_del_entry_valid+0xcc/0x100 (unreliable) tree_put_node+0xf4/0x1b0 [mlx5_core] tree_remove_node+0x30/0x70 [mlx5_core] mlx5_del_flow_rules+0x14c/0x1f0 [mlx5_core] esw_apply_vport_rx_mode+0x10c/0x200 [mlx5_core] esw_update_vport_rx_mode+0xb4/0x180 [mlx5_core] esw_vport_change_handle_locked+0x1ec/0x230 [mlx5_core] esw_enable_vport+0x130/0x260 [mlx5_core] mlx5_eswitch_enable_sriov+0x2a0/0x2f0 [mlx5_core] mlx5_device_enable_sriov+0x74/0x440 [mlx5_core] mlx5_load_one+0x114c/0x1550 [mlx5_core] mlx5_pci_resume+0x68/0xf0 [mlx5_core] eeh_report_resume+0x1a4/0x230 eeh_pe_dev_traverse+0x98/0x170 eeh_handle_normal_event+0x3e4/0x640 eeh_handle_event+0x4c/0x370 eeh_event_handler+0x14c/0x210 kthread+0x168/0x1b0 ret_from_kernel_thread+0x5c/0x84

Affected Software

VendorProductVersion RangeStatus
LinuxLinuxa35f71f27a614aff106cc89b86168962bce2725f < 18cead61e437f4c7898acca0a5f3df12f801d97faffected
LinuxLinuxa35f71f27a614aff106cc89b86168962bce2725f < 4df1f2d36bdc9a368650bf14b9097c555e95f71daffected
LinuxLinuxa35f71f27a614aff106cc89b86168962bce2725f < 63546395a0e6ac264f78f65218086ce6014b4494affected
LinuxLinuxa35f71f27a614aff106cc89b86168962bce2725f < 6f5780536181d1d0d09a11a1bc92f22e143447e2affected
LinuxLinuxa35f71f27a614aff106cc89b86168962bce2725f < 922f56e9a795d6f3dd72d3428ebdd7ee040fa855affected
LinuxLinux4.7affected
LinuxLinux0 < 4.7unaffected
LinuxLinux5.10.177 <= 5.10.*unaffected
LinuxLinux5.15.105 <= 5.15.*unaffected
LinuxLinux6.1.22 <= 6.1.*unaffected
LinuxLinux6.2.9 <= 6.2.*unaffected
LinuxLinux6.3 <= *unaffected

Weaknesses

References