In the Linux kernel, the following vulnerability has been resolved:
i40e: Fix XDP program unloading while removing the driver
The commit 6533e558c650 ("i40e: Fix reset path while removing the driver") introduced a new PF state "__I40E_IN_REMOVE" to block modifying the XDP program while the driver is being removed. Unfortunately, such a change is useful only if the ".ndo_bpf()" callback was called out of the rmmod context because unloading the existing XDP program is also a part of driver removing procedure. In other words, from the rmmod context the driver is expected to unload the XDP program without reporting any errors. Otherwise, the kernel warning with callstack is printed out to dmesg.
Example failing scenario: 1. Load the i40e driver. 2. Load the XDP program. 3. Unload the i40e driver (using "rmmod" command).
The example kernel warning log:
[ +0.004646] WARNING: CPU: 94 PID: 10395 at net/core/dev.c:9290 unregister_netdevice_many_notify+0x7a9/0x870 [...] [ +0.010959] RIP: 0010:unregister_netdevice_many_notify+0x7a9/0x870 [...] [ +0.002726] Call Trace: [ +0.002457] <TASK> [ +0.002119] ? __warn+0x80/0x120 [ +0.003245] ? unregister_netdevice_many_notify+0x7a9/0x870 [ +0.005586] ? report_bug+0x164/0x190 [ +0.003678] ? handle_bug+0x3c/0x80 [ +0.003503] ? exc_invalid_op+0x17/0x70 [ +0.003846] ? asm_exc_invalid_op+0x1a/0x20 [ +0.004200] ? unregister_netdevice_many_notify+0x7a9/0x870 [ +0.005579] ? unregister_netdevice_many_notify+0x3cc/0x870 [ +0.005586] unregister_netdevice_queue+0xf7/0x140 [ +0.004806] unregister_netdev+0x1c/0x30 [ +0.003933] i40e_vsi_release+0x87/0x2f0 [i40e] [ +0.004604] i40e_remove+0x1a1/0x420 [i40e] [ +0.004220] pci_device_remove+0x3f/0xb0 [ +0.003943] device_release_driver_internal+0x19f/0x200 [ +0.005243] driver_detach+0x48/0x90 [ +0.003586] bus_remove_driver+0x6d/0xf0 [ +0.003939] pci_unregister_driver+0x2e/0xb0 [ +0.004278] i40e_exit_module+0x10/0x5f0 [i40e] [ +0.004570] __do_sys_delete_module.isra.0+0x197/0x310 [ +0.005153] do_syscall_64+0x85/0x170 [ +0.003684] ? syscall_exit_to_user_mode+0x69/0x220 [ +0.004886] ? do_syscall_64+0x95/0x170 [ +0.003851] ? exc_page_fault+0x7e/0x180 [ +0.003932] entry_SYSCALL_64_after_hwframe+0x71/0x79 [ +0.005064] RIP: 0033:0x7f59dc9347cb [ +0.003648] Code: 73 01 c3 48 8b 0d 65 16 0c 00 f7 d8 64 89 01 48 83 c8 ff c3 66 2e 0f 1f 84 00 00 00 00 00 90 f3 0f 1e fa b8 b0 00 00 00 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 8b 0d 35 16 0c 00 f7 d8 64 89 01 48 [ +0.018753] RSP: 002b:00007ffffac99048 EFLAGS: 00000206 ORIG_RAX: 00000000000000b0 [ +0.007577] RAX: ffffffffffffffda RBX: 0000559b9bb2f6e0 RCX: 00007f59dc9347cb [ +0.007140] RDX: 0000000000000000 RSI: 0000000000000800 RDI: 0000559b9bb2f748 [ +0.007146] RBP: 00007ffffac99070 R08: 1999999999999999 R09: 0000000000000000 [ +0.007133] R10: 00007f59dc9a5ac0 R11: 0000000000000206 R12: 0000000000000000 [ +0.007141] R13: 00007ffffac992d8 R14: 0000559b9bb2f6e0 R15: 0000000000000000 [ +0.007151] </TASK> [ +0.002204] ---[ end trace 0000000000000000 ]---
Fix this by checking if the XDP program is being loaded or unloaded. Then, block only loading a new program while "__I40E_IN_REMOVE" is set. Also, move testing "__I40E_IN_REMOVE" flag to the beginning of XDP_SETUP callback to avoid unnecessary operations and checks.
CVSS Details
- CVSS 3.1 Base Score: 5.5
- CVSS 3.1 Vector: (CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H)
Covered by Rapid7
| Product | Vendor Advisory | Solution File | Added | Published |
|---|---|---|---|---|
| Debian | — | Upgrade linuxUpgrade linux-6.1 | Sep 2, 2024 | Jul 29, 2024 |
| Oracle_linux | — | Upgrade kernel-uek | Oct 16, 2024 | Jul 29, 2024 |
| Redhat_linux | — | No solution exists | Jul 9, 2025 | Jul 29, 2024 |
| Suse | — | Upgrade kernel-symsUpgrade dlm-kmp-azureUpgrade kernel-rt-optionalUpgrade kernel-64kbUpgrade kernel-defaultUpgrade kernel-default-livepatch-develUpgrade reiserfs-kmp-rtUpgrade dtb-socionextUpgrade kernel-azure-vdsoUpgrade cluster-md-kmp-64kbUpgrade dlm-kmp-rtUpgrade kernel-64kb-optionalUpgrade dtb-marvellUpgrade kernel-source-rtUpgrade kernel-rt-livepatch-develUpgrade kernel-rt_debugUpgrade kernel-rt-vdsoUpgrade reiserfs-kmp-64kbUpgrade cluster-md-kmp-defaultUpgrade kernel-rt_debug-vdsoUpgrade dtb-amazonUpgrade kernel-macrosUpgrade reiserfs-kmp-defaultUpgrade kernel-zfcpdumpUpgrade kselftests-kmp-azureUpgrade kernel-azureUpgrade dtb-amdUpgrade kselftests-kmp-defaultUpgrade kernel-azure-extraUpgrade dtb-freescaleUpgrade gfs2-kmp-64kbUpgrade kernel-source-vanillaUpgrade kernel-64kb-extraUpgrade dtb-sprdUpgrade ocfs2-kmp-64kbUpgrade kernel-debug-develUpgrade kernel-docsUpgrade kernel-debugUpgrade kernel-default-develUpgrade dtb-broadcomUpgrade kernel-kvmsmall-vdsoUpgrade ocfs2-kmp-azureUpgrade gfs2-kmp-defaultUpgrade kernel-obs-qaUpgrade kernel-syms-rtUpgrade dlm-kmp-defaultUpgrade kselftests-kmp-rtUpgrade dtb-hisiliconUpgrade kernel-default-baseUpgrade kernel-docs-htmlUpgrade kernel-rt_debug-develUpgrade dtb-apmUpgrade kernel-default-livepatchUpgrade dtb-amlogicUpgrade dtb-renesasUpgrade kernel-rt_debug-livepatch-develUpgrade dtb-appleUpgrade cluster-md-kmp-azureUpgrade kernel-debug-vdsoUpgrade gfs2-kmp-azureUpgrade reiserfs-kmp-azureUpgrade cluster-md-kmp-rtUpgrade kernel-obs-buildUpgrade kernel-kvmsmall-develUpgrade kselftests-kmp-64kbUpgrade kernel-syms-azureUpgrade kernel-azure-optionalUpgrade ocfs2-kmp-defaultUpgrade dtb-caviumUpgrade dtb-allwinnerUpgrade kernel-azure-livepatch-develUpgrade kernel-default-extraUpgrade kernel-rt-extraUpgrade kernel-rtUpgrade kernel-default-base-rebuildUpgrade dtb-mediatekUpgrade dtb-armUpgrade dtb-alteraUpgrade dtb-qcomUpgrade kernel-default-vdsoUpgrade kernel-default-optionalUpgrade dtb-lgUpgrade kernel-source-azureUpgrade dlm-kmp-64kbUpgrade dtb-rockchipUpgrade dtb-nvidiaUpgrade kernel-devel-azureUpgrade kernel-rt-develUpgrade gfs2-kmp-rtUpgrade kernel-devel-rtUpgrade dtb-xilinxUpgrade dtb-exynosUpgrade kernel-sourceUpgrade kernel-develUpgrade ocfs2-kmp-rtUpgrade kernel-kvmsmallUpgrade kernel-azure-develUpgrade kernel-64kb-devel | Dec 5, 2025 | Nov 13, 2024 |
| Ubuntu | — | Upgrade linux-image-5.15.0-1069-awsUpgrade linux-image-genericUpgrade linux-image-6.8.0-1013-gkeUpgrade linux-image-oem-22.04aUpgrade linux-image-lowlatency-64k-hwe-24.04Upgrade linux-image-5.15.0-121-genericUpgrade linux-image-gkeop-6.8Upgrade linux-image-5.15.0-1072-azureUpgrade linux-image-lowlatency-64k-hwe-20.04Upgrade linux-image-xilinx-zynqmpUpgrade linux-image-intelUpgrade linux-image-azure-lts-22.04Upgrade linux-image-5.15.0-121-lowlatencyUpgrade linux-image-lowlatency-64k-hwe-22.04Upgrade linux-image-ibm-classicUpgrade linux-image-lowlatency-hwe-20.04Upgrade linux-image-6.8.0-1002-gkeopUpgrade linux-image-6.8.0-1017-nvidiaUpgrade linux-image-virtualUpgrade linux-image-raspi-nolpaeUpgrade linux-image-lowlatency-64kUpgrade linux-image-intel-iotgUpgrade linux-image-oem-22.04cUpgrade linux-image-generic-64kUpgrade linux-image-6.8.0-48-lowlatencyUpgrade linux-image-6.8.0-1017-nvidia-lowlatency-64kUpgrade linux-image-gke-5.15Upgrade linux-image-nvidia-64k-6.8Upgrade linux-image-generic-lpaeUpgrade linux-image-5.15.0-1072-azure-fdeUpgrade linux-image-5.15.0-1066-kvmUpgrade linux-image-5.15.0-121-generic-64kUpgrade linux-image-6.8.0-1016-azureUpgrade linux-image-gkeopUpgrade linux-image-lowlatency-hwe-24.04Upgrade linux-image-6.8.0-48-generic-64kUpgrade linux-image-nvidia-64k-hwe-22.04Upgrade linux-image-6.8.0-1016-gcpUpgrade linux-image-nvidia-lowlatency-64kUpgrade linux-image-lowlatency-hwe-22.04Upgrade linux-image-azure-fde-lts-22.04Upgrade linux-image-oem-22.04Upgrade linux-image-5.15.0-1064-intel-iotgUpgrade linux-image-5.15.0-1062-ibmUpgrade linux-image-5.15.0-1068-gcpUpgrade linux-image-lowlatencyUpgrade linux-image-oem-24.04Upgrade linux-image-oem-20.04bUpgrade linux-image-ibmUpgrade linux-image-gcp-lts-22.04Upgrade linux-image-aws-lts-22.04Upgrade linux-image-nvidiaUpgrade linux-image-5.15.0-1052-gkeopUpgrade linux-image-generic-64k-hwe-20.04Upgrade linux-image-6.8.0-1015-oracleUpgrade linux-image-oracle-64kUpgrade linux-image-6.8.0-1016-azure-fdeUpgrade linux-image-5.15.0-1064-nvidiaUpgrade linux-image-6.8.0-1014-ibmUpgrade linux-image-gcpUpgrade linux-image-6.8.0-48-lowlatency-64kUpgrade linux-image-6.8.0-1017-azureUpgrade linux-image-generic-hwe-20.04Upgrade linux-image-azure-cvmUpgrade linux-image-6.8.0-1017-azure-fdeUpgrade linux-image-6.8.0-1014-raspiUpgrade linux-image-nvidia-hwe-22.04Upgrade linux-image-awsUpgrade linux-image-generic-lpae-hwe-20.04Upgrade linux-image-kvmUpgrade linux-image-5.15.0-1062-raspiUpgrade linux-image-6.8.0-1017-nvidia-64kUpgrade linux-image-azureUpgrade linux-image-5.15.0-1035-xilinx-zynqmpUpgrade linux-image-5.15.0-121-lowlatency-64kUpgrade linux-image-oem-20.04cUpgrade linux-image-azure-fdeUpgrade linux-image-generic-64k-hwe-24.04Upgrade linux-image-ibm-lts-24.04Upgrade linux-image-5.15.0-121-generic-lpaeUpgrade linux-image-5.15.0-1067-oracleUpgrade linux-image-6.8.0-1017-nvidia-lowlatencyUpgrade linux-image-5.15.0-1064-nvidia-lowlatencyUpgrade linux-image-6.8.0-1015-oracle-64kUpgrade linux-image-virtual-hwe-24.04Upgrade linux-image-nvidia-lowlatencyUpgrade linux-image-generic-hwe-22.04Upgrade linux-image-6.8.0-1018-awsUpgrade linux-image-generic-hwe-24.04Upgrade linux-image-6.8.0-1016-oemUpgrade linux-image-6.8.0-48-genericUpgrade linux-image-oracle-lts-22.04Upgrade linux-image-5.15.0-1066-gkeUpgrade linux-image-6.8.0-1017-gcpUpgrade linux-image-nvidia-64kUpgrade linux-image-oem-22.04dUpgrade linux-image-virtual-hwe-20.04Upgrade linux-image-oem-20.04dUpgrade linux-image-oem-22.04bUpgrade linux-image-oracleUpgrade linux-image-virtual-hwe-22.04Upgrade linux-image-nvidia-6.8Upgrade linux-image-oem-20.04Upgrade linux-image-oem-24.04aUpgrade linux-image-generic-64k-hwe-22.04Upgrade linux-image-gkeop-5.15Upgrade linux-image-raspiUpgrade linux-image-gke | Sep 16, 2024 | Jul 29, 2024 |
| Vmware Photon_os | — | Use 'tdnf update' to upgrade all packages to the latest version. | Oct 13, 2025 | Jul 29, 2024 |
Prioritise with Active Threat Intelligence
With curated Threat Intelligence, you can see which vulnerabilities truly put you at risk, prioritize what matters most, and act before attackers do.
Explore Intelligence Hub