# CVE-2024-46765: ice: protect XDP configuration with a mutex

CVE-2024-46765 is fixed in 26 products on 1 platform, first by DEBIAN-CVE-2024-46765, released September 18, 2024. It is not reported as exploited. Patch Radar priority: Routine.

- Web page: https://patchblox.com/security/cve/CVE-2024-46765
- Priority: Routine
- CVSS: 5.5 (Moderate)
- EPSS: 0.0024
- CISA KEV: not listed
- Exploited (vendor report): no
- Publicly disclosed: no
- Published: Sep 18, 2024
- Weakness: NULL Pointer Dereference
- Vendor advisory: https://msrc.microsoft.com/update-guide/vulnerability/CVE-2024-46765

## Description

In the Linux kernel, the following vulnerability has been resolved:  ice: protect XDP configuration with a mutex  The main threat to data consistency in ice_xdp() is a possible asynchronous PF reset. It can be triggered by a user or by TX timeout handler.  XDP setup and PF reset code access the same resources in the following sections: * ice_vsi_close() in ice_prepare_for_reset() - already rtnl-locked * ice_vsi_rebuild() for the PF VSI - not protected * ice_vsi_open() - already rtnl-locked  With an unfortunate timing, such accesses can result in a crash such as the one below:  [ +1.999878] ice 0000:b1:00.0: Registered XDP mem model MEM_TYPE_XSK_BUFF_POOL on Rx ring 14 [ +2.002992] ice 0000:b1:00.0: Registered XDP mem model MEM_TYPE_XSK_BUFF_POOL on Rx ring 18 [Mar15 18:17] ice 0000:b1:00.0 ens801f0np0: NETDEV WATCHDOG: CPU: 38: transmit queue 14 timed out 80692736 ms [ +0.000093] ice 0000:b1:00.0 ens801f0np0: tx_timeout: VSI_num: 6, Q 14, NTC: 0x0, HW_HEAD: 0x0, NTU: 0x0, INT: 0x4000001 [ +0.000012] ice 0000:b1:00.0 ens801f0np0: tx_timeout recovery level 1, txqueue 14 [ +0.394718] ice 0000:b1:00.0: PTP reset successful [ +0.006184] BUG: kernel NULL pointer dereference, address: 0000000000000098 [ +0.000045] #PF: supervisor read access in kernel mode [ +0.000023] #PF: error_code(0x0000) - not-present page [ +0.000023] PGD 0 P4D 0 [ +0.000018] Oops: 0000 [#1] PREEMPT SMP NOPTI [ +0.000023] CPU: 38 PID: 7540 Comm: kworker/38:1 Not tainted 6.8.0-rc7 #1 [ +0.000031] Hardware name: Intel Corporation S2600WFT/S2600WFT, BIOS SE5C620.86B.02.01.0014.082620210524 08/26/2021 [ +0.000036] Workqueue: ice ice_service_task [ice] [ +0.000183] RIP: 0010:ice_clean_tx_ring+0xa/0xd0 [ice] [...] [ +0.000013] Call Trace: [ +0.000016] <TASK> [ +0.000014] ? __die+0x1f/0x70 [ +0.000029] ? page_fault_oops+0x171/0x4f0 [ +0.000029] ? schedule+0x3b/0xd0 [ +0.000027] ? exc_page_fault+0x7b/0x180 [ +0.000022] ? asm_exc_page_fault+0x22/0x30 [ +0.000031] ? ice_clean_tx_ring+0xa/0xd0 [ice] [ +0.000194] ice_free_tx_ring+0xe/0x60 [ice] [ +0.000186] ice_destroy_xdp_rings+0x157/0x310 [ice] [ +0.000151] ice_vsi_decfg+0x53/0xe0 [ice] [ +0.000180] ice_vsi_rebuild+0x239/0x540 [ice] [ +0.000186] ice_vsi_rebuild_by_type+0x76/0x180 [ice] [ +0.000145] ice_rebuild+0x18c/0x840 [ice] [ +0.000145] ? delay_tsc+0x4a/0xc0 [ +0.000022] ? delay_tsc+0x92/0xc0 [ +0.000020] ice_do_reset+0x140/0x180 [ice] [ +0.000886] ice_service_task+0x404/0x1030 [ice] [ +0.000824] process_one_work+0x171/0x340 [ +0.000685] worker_thread+0x277/0x3a0 [ +0.000675] ? preempt_count_add+0x6a/0xa0 [ +0.000677] ? _raw_spin_lock_irqsave+0x23/0x50 [ +0.000679] ? __pfx_worker_thread+0x10/0x10 [ +0.000653] kthread+0xf0/0x120 [ +0.000635] ? __pfx_kthread+0x10/0x10 [ +0.000616] ret_from_fork+0x2d/0x50 [ +0.000612] ? __pfx_kthread+0x10/0x10 [ +0.000604] ret_from_fork_asm+0x1b/0x30 [ +0.000604] </TASK>  The previous way of handling this through returning -EBUSY is not viable, particularly when destroying AF_XDP socket, because the kernel proceeds with removal anyway.  There is plenty of code between those calls and there is no need to create a large critical section that covers all of them, same as there is no need to protect ice_vsi_rebuild() with rtnl_lock().  Add xdp_state_lock mutex to protect ice_vsi_rebuild() and ice_xdp().  Leaving unprotected sections in between would result in two states that have to be considered: 1. when the VSI is closed, but not yet rebuild 2. when VSI is already rebuild, but not yet open  The latter case is actually already handled through !netif_running() case, we just need to adjust flag checking a little. The former one is not as trivial, because between ice_vsi_close() and ice_vsi_rebuild(), a lot of hardware interaction happens, this can make adding/deleting rings exit with an error. Luckily, VSI rebuild is pending and can apply new configuration for us in a managed fashion.  Therefore, add an additional VSI state flag ICE_VSI_REBUILD_PENDING to indicate that ice_x ---truncated---

## Where it's fixed

| Platform | Product | Fixed in | Fix | Released |
|---|---|---|---|---|
| Linux | dtb-aarch64 opensuse-leap 15.6 | 6.4.0-150600.23.30.1 | [SUSE-SU-2024:4318-1](https://patchblox.com/security/data/fix/linux/suse-su-2024-4318-1.md) | Dec 13, 2024 |
| Linux | kernel-64kb opensuse-leap 15.6 | 6.4.0-150600.23.30.1 | [SUSE-SU-2024:4318-1](https://patchblox.com/security/data/fix/linux/suse-su-2024-4318-1.md) | Dec 13, 2024 |
| Linux | kernel-64kb sles 15.6 | 6.4.0-150600.23.30.1 | [SUSE-SU-2024:4318-1](https://patchblox.com/security/data/fix/linux/suse-su-2024-4318-1.md) | Dec 13, 2024 |
| Linux | kernel-azure opensuse-leap 15.6 | 6.4.0-150600.8.20.1 | [SUSE-SU-2024:4316-1](https://patchblox.com/security/data/fix/linux/suse-su-2024-4316-1.md) | Dec 13, 2024 |
| Linux | kernel-azure sles 15.6 | 6.4.0-150600.8.20.1 | [SUSE-SU-2024:4316-1](https://patchblox.com/security/data/fix/linux/suse-su-2024-4316-1.md) | Dec 13, 2024 |
| Linux | kernel-coco sles 15.6 | 6.4.0-15061.12.coco15sp6.1 | [SUSE-SU-2025:0289-1](https://patchblox.com/security/data/fix/linux/suse-su-2025-0289-1.md) | Jan 29, 2025 |
| Linux | kernel-coco_debug sles 15.6 | 6.4.0-15061.12.coco15sp6.1 | [SUSE-SU-2025:0289-1](https://patchblox.com/security/data/fix/linux/suse-su-2025-0289-1.md) | Jan 29, 2025 |
| Linux | kernel-debug opensuse-leap 15.6 | 6.4.0-150600.23.30.1 | [SUSE-SU-2024:4318-1](https://patchblox.com/security/data/fix/linux/suse-su-2024-4318-1.md) | Dec 13, 2024 |
| Linux | kernel-default opensuse-leap 15.6 | 6.4.0-150600.23.30.1 | [SUSE-SU-2024:4318-1](https://patchblox.com/security/data/fix/linux/suse-su-2024-4318-1.md) | Dec 13, 2024 |
| Linux | kernel-default sles 15.6 | 6.4.0-150600.23.30.1 | [SUSE-SU-2024:4318-1](https://patchblox.com/security/data/fix/linux/suse-su-2024-4318-1.md) | Dec 13, 2024 |
| Linux | kernel-default-base opensuse-leap 15.6 | 6.4.0-150600.23.30.1.150600.12.12.6 | [SUSE-SU-2024:4318-1](https://patchblox.com/security/data/fix/linux/suse-su-2024-4318-1.md) | Dec 13, 2024 |
| Linux | kernel-default-base sles 15.6 | 6.4.0-150600.23.30.1.150600.12.12.6 | [SUSE-SU-2024:4318-1](https://patchblox.com/security/data/fix/linux/suse-su-2024-4318-1.md) | Dec 13, 2024 |
| Linux | kernel-docs opensuse-leap 15.6 | 6.4.0-150600.23.30.1 | [SUSE-SU-2024:4318-1](https://patchblox.com/security/data/fix/linux/suse-su-2024-4318-1.md) | Dec 13, 2024 |
| Linux | kernel-docs sles 15.6 | 6.4.0-150600.23.30.1 | [SUSE-SU-2024:4318-1](https://patchblox.com/security/data/fix/linux/suse-su-2024-4318-1.md) | Dec 13, 2024 |
| Linux | kernel-kvmsmall opensuse-leap 15.6 | 6.4.0-150600.23.30.1 | [SUSE-SU-2024:4318-1](https://patchblox.com/security/data/fix/linux/suse-su-2024-4318-1.md) | Dec 13, 2024 |
| Linux | kernel-livepatch-SLE15-SP6-RT_Update_6 sles 15.6 | 1-150600.1.3.1 | [SUSE-SU-2024:4314-1](https://patchblox.com/security/data/fix/linux/suse-su-2024-4314-1.md) | Dec 13, 2024 |
| Linux | kernel-livepatch-SLE15-SP6_Update_6 sles 15.6 | 1-150600.13.3.5 | [SUSE-SU-2024:4318-1](https://patchblox.com/security/data/fix/linux/suse-su-2024-4318-1.md) | Dec 13, 2024 |
| Linux | kernel-obs-build opensuse-leap 15.6 | 6.4.0-150600.23.30.1 | [SUSE-SU-2024:4318-1](https://patchblox.com/security/data/fix/linux/suse-su-2024-4318-1.md) | Dec 13, 2024 |
| Linux | kernel-obs-build sles 15.6 | 6.4.0-150600.23.30.1 | [SUSE-SU-2024:4318-1](https://patchblox.com/security/data/fix/linux/suse-su-2024-4318-1.md) | Dec 13, 2024 |
| Linux | kernel-obs-qa opensuse-leap 15.6 | 6.4.0-150600.23.30.1 | [SUSE-SU-2024:4318-1](https://patchblox.com/security/data/fix/linux/suse-su-2024-4318-1.md) | Dec 13, 2024 |
| Linux | kernel-rt opensuse-leap 15.6 | 6.4.0-150600.10.20.1 | [SUSE-SU-2024:4314-1](https://patchblox.com/security/data/fix/linux/suse-su-2024-4314-1.md) | Dec 13, 2024 |
| Linux | kernel-rt_debug opensuse-leap 15.6 | 6.4.0-150600.10.20.1 | [SUSE-SU-2024:4314-1](https://patchblox.com/security/data/fix/linux/suse-su-2024-4314-1.md) | Dec 13, 2024 |
| Linux | kernel-source opensuse-leap 15.6 | 6.4.0-150600.23.30.1 | [SUSE-SU-2024:4318-1](https://patchblox.com/security/data/fix/linux/suse-su-2024-4318-1.md) | Dec 13, 2024 |
| Linux | kernel-source sles 15.6 | 6.4.0-150600.23.30.1 | [SUSE-SU-2024:4318-1](https://patchblox.com/security/data/fix/linux/suse-su-2024-4318-1.md) | Dec 13, 2024 |
| Linux | kernel-source-azure opensuse-leap 15.6 | 6.4.0-150600.8.20.1 | [SUSE-SU-2024:4316-1](https://patchblox.com/security/data/fix/linux/suse-su-2024-4316-1.md) | Dec 13, 2024 |
| Linux | kernel-source-azure sles 15.6 | 6.4.0-150600.8.20.1 | [SUSE-SU-2024:4316-1](https://patchblox.com/security/data/fix/linux/suse-su-2024-4316-1.md) | Dec 13, 2024 |
| Linux | kernel-source-coco sles 15.6 | 6.4.0-15061.12.coco15sp6.1 | [SUSE-SU-2025:0289-1](https://patchblox.com/security/data/fix/linux/suse-su-2025-0289-1.md) | Jan 29, 2025 |
| Linux | kernel-source-rt opensuse-leap 15.6 | 6.4.0-150600.10.20.1 | [SUSE-SU-2024:4314-1](https://patchblox.com/security/data/fix/linux/suse-su-2024-4314-1.md) | Dec 13, 2024 |
| Linux | kernel-syms opensuse-leap 15.6 | 6.4.0-150600.23.30.1 | [SUSE-SU-2024:4318-1](https://patchblox.com/security/data/fix/linux/suse-su-2024-4318-1.md) | Dec 13, 2024 |
| Linux | kernel-syms sles 15.6 | 6.4.0-150600.23.30.1 | [SUSE-SU-2024:4318-1](https://patchblox.com/security/data/fix/linux/suse-su-2024-4318-1.md) | Dec 13, 2024 |
| Linux | kernel-syms-azure opensuse-leap 15.6 | 6.4.0-150600.8.20.1 | [SUSE-SU-2024:4316-1](https://patchblox.com/security/data/fix/linux/suse-su-2024-4316-1.md) | Dec 13, 2024 |
| Linux | kernel-syms-azure sles 15.6 | 6.4.0-150600.8.20.1 | [SUSE-SU-2024:4316-1](https://patchblox.com/security/data/fix/linux/suse-su-2024-4316-1.md) | Dec 13, 2024 |
| Linux | kernel-syms-coco sles 15.6 | 6.4.0-15061.12.coco15sp6.1 | [SUSE-SU-2025:0289-1](https://patchblox.com/security/data/fix/linux/suse-su-2025-0289-1.md) | Jan 29, 2025 |
| Linux | kernel-syms-rt opensuse-leap 15.6 | 6.4.0-150600.10.20.1 | [SUSE-SU-2024:4314-1](https://patchblox.com/security/data/fix/linux/suse-su-2024-4314-1.md) | Dec 13, 2024 |
| Linux | kernel-zfcpdump opensuse-leap 15.6 | 6.4.0-150600.23.30.1 | [SUSE-SU-2024:4318-1](https://patchblox.com/security/data/fix/linux/suse-su-2024-4318-1.md) | Dec 13, 2024 |
| Linux | kernel-zfcpdump sles 15.6 | 6.4.0-150600.23.30.1 | [SUSE-SU-2024:4318-1](https://patchblox.com/security/data/fix/linux/suse-su-2024-4318-1.md) | Dec 13, 2024 |
| Linux | linux Debian 13.5 (trixie) | 6.10.11-1 | [DEBIAN-CVE-2024-46765](https://patchblox.com/security/data/fix/linux/debian-cve-2024-46765.md) | Sep 18, 2024 |
| Linux | linux Debian 14 | 6.10.11-1 | [DEBIAN-CVE-2024-46765](https://patchblox.com/security/data/fix/linux/debian-cve-2024-46765.md) | Sep 18, 2024 |

---

Data as of 2026-11-09T13:31:49Z UTC. Source: Patchblox Patch Radar (https://patchblox.com/security/patch-radar). Patchblox finds out-of-date software on Windows, macOS and Linux and updates it through release rings: https://patchblox.com/demo

Free to use with attribution: show "Data: Patchblox Patch Radar" with a link to https://patchblox.com/security/patch-radar. Terms, including what needs a written agreement: https://patchblox.com/security/patch-radar/use-the-data

Product names, logos and trademarks shown on Patch Radar belong to their respective owners. They are used only to identify the software each security fix applies to and to help readers find their platform. Their use does not imply any affiliation with, or endorsement by, those owners, and Patchblox is not affiliated with any of them.
