| From bippy-5f407fcff5a0 Mon Sep 17 00:00:00 2001 |
| From: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| To: <linux-cve-announce@vger.kernel.org> |
| Reply-to: <cve@kernel.org>, <linux-kernel@vger.kernel.org> |
| Subject: CVE-2025-21675: net/mlx5: Clear port select structure when fail to create |
| |
| Description |
| =========== |
| |
| In the Linux kernel, the following vulnerability has been resolved: |
| |
| net/mlx5: Clear port select structure when fail to create |
| |
| Clear the port select structure on error so no stale values left after |
| definers are destroyed. That's because the mlx5_lag_destroy_definers() |
| always try to destroy all lag definers in the tt_map, so in the flow |
| below lag definers get double-destroyed and cause kernel crash: |
| |
| mlx5_lag_port_sel_create() |
| mlx5_lag_create_definers() |
| mlx5_lag_create_definer() <- Failed on tt 1 |
| mlx5_lag_destroy_definers() <- definers[tt=0] gets destroyed |
| mlx5_lag_port_sel_create() |
| mlx5_lag_create_definers() |
| mlx5_lag_create_definer() <- Failed on tt 0 |
| mlx5_lag_destroy_definers() <- definers[tt=0] gets double-destroyed |
| |
| Unable to handle kernel NULL pointer dereference at virtual address 0000000000000008 |
| Mem abort info: |
| ESR = 0x0000000096000005 |
| EC = 0x25: DABT (current EL), IL = 32 bits |
| SET = 0, FnV = 0 |
| EA = 0, S1PTW = 0 |
| FSC = 0x05: level 1 translation fault |
| Data abort info: |
| ISV = 0, ISS = 0x00000005, ISS2 = 0x00000000 |
| CM = 0, WnR = 0, TnD = 0, TagAccess = 0 |
| GCS = 0, Overlay = 0, DirtyBit = 0, Xs = 0 |
| user pgtable: 64k pages, 48-bit VAs, pgdp=0000000112ce2e00 |
| [0000000000000008] pgd=0000000000000000, p4d=0000000000000000, pud=0000000000000000 |
| Internal error: Oops: 0000000096000005 [#1] PREEMPT SMP |
| Modules linked in: iptable_raw bonding ip_gre ip6_gre gre ip6_tunnel tunnel6 geneve ip6_udp_tunnel udp_tunnel ipip tunnel4 ip_tunnel rdma_ucm(OE) rdma_cm(OE) iw_cm(OE) ib_ipoib(OE) ib_cm(OE) ib_umad(OE) mlx5_ib(OE) ib_uverbs(OE) mlx5_fwctl(OE) fwctl(OE) mlx5_core(OE) mlxdevm(OE) ib_core(OE) mlxfw(OE) memtrack(OE) mlx_compat(OE) openvswitch nsh nf_conncount psample xt_conntrack xt_MASQUERADE nf_conntrack_netlink nfnetlink xfrm_user xfrm_algo xt_addrtype iptable_filter iptable_nat nf_nat nf_conntrack nf_defrag_ipv6 nf_defrag_ipv4 br_netfilter bridge stp llc netconsole overlay efi_pstore sch_fq_codel zram ip_tables crct10dif_ce qemu_fw_cfg fuse ipv6 crc_ccitt [last unloaded: mlx_compat(OE)] |
| CPU: 3 UID: 0 PID: 217 Comm: kworker/u53:2 Tainted: G OE 6.11.0+ #2 |
| Tainted: [O]=OOT_MODULE, [E]=UNSIGNED_MODULE |
| Hardware name: QEMU KVM Virtual Machine, BIOS 0.0.0 02/06/2015 |
| Workqueue: mlx5_lag mlx5_do_bond_work [mlx5_core] |
| pstate: 60400005 (nZCv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--) |
| pc : mlx5_del_flow_rules+0x24/0x2c0 [mlx5_core] |
| lr : mlx5_lag_destroy_definer+0x54/0x100 [mlx5_core] |
| sp : ffff800085fafb00 |
| x29: ffff800085fafb00 x28: ffff0000da0c8000 x27: 0000000000000000 |
| x26: ffff0000da0c8000 x25: ffff0000da0c8000 x24: ffff0000da0c8000 |
| x23: ffff0000c31f81a0 x22: 0400000000000000 x21: ffff0000da0c8000 |
| x20: 0000000000000000 x19: 0000000000000001 x18: 0000000000000000 |
| x17: 0000000000000000 x16: 0000000000000000 x15: 0000ffff8b0c9350 |
| x14: 0000000000000000 x13: ffff800081390d18 x12: ffff800081dc3cc0 |
| x11: 0000000000000001 x10: 0000000000000b10 x9 : ffff80007ab7304c |
| x8 : ffff0000d00711f0 x7 : 0000000000000004 x6 : 0000000000000190 |
| x5 : ffff00027edb3010 x4 : 0000000000000000 x3 : 0000000000000000 |
| x2 : ffff0000d39b8000 x1 : ffff0000d39b8000 x0 : 0400000000000000 |
| Call trace: |
| mlx5_del_flow_rules+0x24/0x2c0 [mlx5_core] |
| mlx5_lag_destroy_definer+0x54/0x100 [mlx5_core] |
| mlx5_lag_destroy_definers+0xa0/0x108 [mlx5_core] |
| mlx5_lag_port_sel_create+0x2d4/0x6f8 [mlx5_core] |
| mlx5_activate_lag+0x60c/0x6f8 [mlx5_core] |
| mlx5_do_bond_work+0x284/0x5c8 [mlx5_core] |
| process_one_work+0x170/0x3e0 |
| worker_thread+0x2d8/0x3e0 |
| kthread+0x11c/0x128 |
| ret_from_fork+0x10/0x20 |
| Code: a9025bf5 aa0003f6 a90363f7 f90023f9 (f9400400) |
| ---[ end trace 0000000000000000 ]--- |
| |
| The Linux kernel CVE team has assigned CVE-2025-21675 to this issue. |
| |
| |
| Affected and fixed versions |
| =========================== |
| |
| Issue introduced in 5.16 with commit dc48516ec7d369c6b80bf9f14d774287b6c428aa and fixed in 6.1.127 with commit efc92a260e23cf9fafb0b6f6c9beb6f8df93fab4 |
| Issue introduced in 5.16 with commit dc48516ec7d369c6b80bf9f14d774287b6c428aa and fixed in 6.6.74 with commit 473bc285378f49aa27e5b3e95a6d5ed12995d654 |
| Issue introduced in 5.16 with commit dc48516ec7d369c6b80bf9f14d774287b6c428aa and fixed in 6.12.11 with commit 1f6e619ef2a4def555b14ac2aeb4304bfccad59b |
| Issue introduced in 5.16 with commit dc48516ec7d369c6b80bf9f14d774287b6c428aa and fixed in 6.13 with commit 5641e82cb55b4ecbc6366a499300917d2f3e6790 |
| |
| Please see https://www.kernel.org for a full list of currently supported |
| kernel versions by the kernel community. |
| |
| Unaffected versions might change over time as fixes are backported to |
| older supported kernel versions. The official CVE entry at |
| https://cve.org/CVERecord/?id=CVE-2025-21675 |
| will be updated if fixes are backported, please check that for the most |
| up to date information about this issue. |
| |
| |
| Affected files |
| ============== |
| |
| The file(s) affected by this issue are: |
| drivers/net/ethernet/mellanox/mlx5/core/lag/port_sel.c |
| |
| |
| Mitigation |
| ========== |
| |
| The Linux kernel CVE team recommends that you update to the latest |
| stable kernel version for this, and many other bugfixes. Individual |
| changes are never tested alone, but rather are part of a larger kernel |
| release. Cherry-picking individual commits is not recommended or |
| supported by the Linux kernel community at all. If however, updating to |
| the latest release is impossible, the individual changes to resolve this |
| issue can be found at these commits: |
| https://git.kernel.org/stable/c/efc92a260e23cf9fafb0b6f6c9beb6f8df93fab4 |
| https://git.kernel.org/stable/c/473bc285378f49aa27e5b3e95a6d5ed12995d654 |
| https://git.kernel.org/stable/c/1f6e619ef2a4def555b14ac2aeb4304bfccad59b |
| https://git.kernel.org/stable/c/5641e82cb55b4ecbc6366a499300917d2f3e6790 |