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 gfs2-kmp-rtUpgrade kernel-source-azureUpgrade dtb-lgUpgrade kernel-azure-develUpgrade dlm-kmp-64kbUpgrade kernel-rt-develUpgrade dtb-caviumUpgrade kernel-default-optionalUpgrade dtb-qcomUpgrade kernel-default-vdsoUpgrade dtb-mediatekUpgrade dtb-armUpgrade kernel-rtUpgrade dtb-allwinnerUpgrade kernel-default-base-rebuildUpgrade kernel-azure-livepatch-develUpgrade cluster-md-kmp-rtUpgrade kernel-syms-azureUpgrade cluster-md-kmp-azureUpgrade kernel-kvmsmall-develUpgrade kernel-debug-vdsoUpgrade kernel-azure-optionalUpgrade gfs2-kmp-azureUpgrade kernel-rt-extraUpgrade kernel-obs-buildUpgrade dtb-rockchipUpgrade dtb-xilinxUpgrade kernel-develUpgrade kernel-devel-azureUpgrade kernel-kvmsmallUpgrade kernel-sourceUpgrade dtb-exynosUpgrade kernel-devel-rtUpgrade ocfs2-kmp-rtUpgrade dtb-nvidiaUpgrade kernel-64kb-develUpgrade dtb-alteraUpgrade kernel-default-extraUpgrade ocfs2-kmp-defaultUpgrade reiserfs-kmp-azureUpgrade kselftests-kmp-64kbUpgrade kernel-defaultUpgrade kernel-default-develUpgrade dtb-amazonUpgrade kernel-rt_debug-vdsoUpgrade kernel-default-livepatchUpgrade reiserfs-kmp-defaultUpgrade gfs2-kmp-64kbUpgrade kernel-rt_debug-livepatch-develUpgrade dtb-renesasUpgrade dtb-freescaleUpgrade kselftests-kmp-rtUpgrade kselftests-kmp-defaultUpgrade kernel-debug-develUpgrade kernel-azureUpgrade dlm-kmp-rtUpgrade reiserfs-kmp-64kbUpgrade dtb-amlogicUpgrade kernel-symsUpgrade kernel-64kbUpgrade kernel-rt-optionalUpgrade kernel-source-rtUpgrade dlm-kmp-azureUpgrade kernel-default-livepatch-develUpgrade gfs2-kmp-defaultUpgrade dtb-apmUpgrade kernel-64kb-extraUpgrade dtb-sprdUpgrade kernel-source-vanillaUpgrade kernel-docsUpgrade kernel-debugUpgrade kernel-azure-extraUpgrade kernel-rt-livepatch-develUpgrade reiserfs-kmp-rtUpgrade kernel-rt_debugUpgrade kernel-azure-vdsoUpgrade dtb-socionextUpgrade dtb-appleUpgrade dtb-marvellUpgrade kernel-rt-vdsoUpgrade cluster-md-kmp-defaultUpgrade kernel-kvmsmall-vdsoUpgrade kernel-64kb-optionalUpgrade cluster-md-kmp-64kbUpgrade ocfs2-kmp-64kbUpgrade kernel-zfcpdumpUpgrade kernel-macrosUpgrade dtb-amdUpgrade kselftests-kmp-azureUpgrade kernel-rt_debug-develUpgrade ocfs2-kmp-azureUpgrade kernel-syms-rtUpgrade kernel-obs-qaUpgrade kernel-docs-htmlUpgrade kernel-default-baseUpgrade dtb-hisiliconUpgrade dtb-broadcomUpgrade dlm-kmp-default | Dec 5, 2025 | Nov 13, 2024 |
| Ubuntu | — | Upgrade linux-image-gkeUpgrade linux-image-generic-hwe-24.04Upgrade linux-image-5.15.0-1067-oracleUpgrade linux-image-6.8.0-1016-azure-fdeUpgrade linux-image-generic-64k-hwe-24.04Upgrade linux-image-5.15.0-121-generic-lpaeUpgrade linux-image-oracle-64kUpgrade linux-image-generic-hwe-20.04Upgrade linux-image-6.8.0-1017-azureUpgrade linux-image-6.8.0-1015-oracle-64kUpgrade linux-image-virtual-hwe-20.04Upgrade linux-image-oracleUpgrade linux-image-oem-20.04Upgrade linux-image-5.15.0-121-lowlatency-64kUpgrade linux-image-oem-22.04bUpgrade linux-image-nvidia-lowlatencyUpgrade linux-image-5.15.0-1035-xilinx-zynqmpUpgrade linux-image-5.15.0-1062-raspiUpgrade linux-image-nvidia-64kUpgrade linux-image-6.8.0-1015-oracleUpgrade linux-image-azureUpgrade linux-image-kvmUpgrade linux-image-6.8.0-48-genericUpgrade linux-image-generic-lpae-hwe-20.04Upgrade linux-image-6.8.0-1016-oemUpgrade linux-image-virtual-hwe-24.04Upgrade linux-image-6.8.0-1018-awsUpgrade linux-image-6.8.0-1017-gcpUpgrade linux-image-awsUpgrade linux-image-5.15.0-1064-nvidia-lowlatencyUpgrade linux-image-generic-hwe-22.04Upgrade linux-image-virtual-hwe-22.04Upgrade linux-image-6.8.0-1017-nvidia-lowlatencyUpgrade linux-image-5.15.0-1066-gkeUpgrade linux-image-azure-fdeUpgrade linux-image-6.8.0-1017-nvidia-64kUpgrade linux-image-nvidia-6.8Upgrade linux-image-gcpUpgrade linux-image-6.8.0-1014-raspiUpgrade linux-image-6.8.0-48-lowlatency-64kUpgrade linux-image-6.8.0-1017-azure-fdeUpgrade linux-image-ibm-lts-24.04Upgrade linux-image-oem-20.04cUpgrade linux-image-nvidia-hwe-22.04Upgrade linux-image-5.15.0-1064-nvidiaUpgrade linux-image-oracle-lts-22.04Upgrade linux-image-oem-20.04dUpgrade linux-image-oem-22.04dUpgrade linux-image-generic-64k-hwe-22.04Upgrade linux-image-gkeop-5.15Upgrade linux-image-oem-24.04aUpgrade linux-image-6.8.0-1014-ibmUpgrade linux-image-azure-cvmUpgrade linux-image-raspiUpgrade linux-image-6.8.0-1013-gkeUpgrade linux-image-oem-22.04cUpgrade linux-image-genericUpgrade linux-image-gcp-lts-22.04Upgrade linux-image-gkeop-6.8Upgrade linux-image-lowlatency-64k-hwe-24.04Upgrade linux-image-intelUpgrade linux-image-azure-lts-22.04Upgrade linux-image-ibmUpgrade linux-image-nvidia-64k-6.8Upgrade linux-image-5.15.0-121-lowlatencyUpgrade linux-image-oem-22.04Upgrade linux-image-5.15.0-1068-gcpUpgrade linux-image-lowlatency-hwe-24.04Upgrade linux-image-6.8.0-1016-gcpUpgrade linux-image-nvidiaUpgrade linux-image-lowlatency-hwe-20.04Upgrade linux-image-5.15.0-121-genericUpgrade linux-image-5.15.0-1069-awsUpgrade linux-image-generic-64k-hwe-20.04Upgrade linux-image-lowlatency-64k-hwe-20.04Upgrade linux-image-intel-iotgUpgrade linux-image-5.15.0-1062-ibmUpgrade linux-image-oem-20.04bUpgrade linux-image-5.15.0-1064-intel-iotgUpgrade linux-image-5.15.0-1072-azureUpgrade linux-image-azure-fde-lts-22.04Upgrade linux-image-lowlatency-64k-hwe-22.04Upgrade linux-image-oem-24.04Upgrade linux-image-gkeopUpgrade linux-image-nvidia-64k-hwe-22.04Upgrade linux-image-6.8.0-1016-azureUpgrade linux-image-6.8.0-48-generic-64kUpgrade linux-image-lowlatency-hwe-22.04Upgrade linux-image-5.15.0-1072-azure-fdeUpgrade linux-image-xilinx-zynqmpUpgrade linux-image-6.8.0-48-lowlatencyUpgrade linux-image-5.15.0-1052-gkeopUpgrade linux-image-gke-5.15Upgrade linux-image-5.15.0-1066-kvmUpgrade linux-image-generic-64kUpgrade linux-image-nvidia-lowlatency-64kUpgrade linux-image-6.8.0-1017-nvidia-lowlatency-64kUpgrade linux-image-6.8.0-1017-nvidiaUpgrade linux-image-ibm-classicUpgrade linux-image-6.8.0-1002-gkeopUpgrade linux-image-lowlatency-64kUpgrade linux-image-5.15.0-121-generic-64kUpgrade linux-image-raspi-nolpaeUpgrade linux-image-virtualUpgrade linux-image-aws-lts-22.04Upgrade linux-image-lowlatencyUpgrade linux-image-generic-lpaeUpgrade linux-image-oem-22.04a | 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