i40e: Fix XDP program unloading while removing the driver
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] [ +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+0x
- Products
- Kernel
- Affected versions
- Not specified
- Fixed versions
- 5.15.163, 6.1.100, 6.6.41, 6.9.10
- CVEs
- CVE-2024-41047
- Confirmed fixed CVEs
- Not specified
- Updated in this feed
- 5 Nov 2026, 04:24 UTC · Revision 1
Source evidence
i40e: Fix XDP program unloading while removing the driver
core-osv · Original sourcePublished 29 Jul 2024, 14:32 UTC
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] [ +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+0x
osv:CVE-2024-41047
Kernel
Fixed versions: 5.15.163, 6.1.100, 6.6.41, 6.9.10
Complete source record
{
"id": "df5c242961e2ca42a8abc35ab6439ecf29511adee45e549babfb54fc525eab3e",
"url": "https://osv.dev/vulnerability/CVE-2024-41047",
"method": "structured",
"payload": {
"kind": "advisory",
"title": "i40e: Fix XDP program unloading while removing the driver",
"summary": "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] [ +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+0x",
"evidence": "osv:CVE-2024-41047",
"products": [
{
"name": {
"value": "Kernel",
"evidence": "/affected/1/package/name"
},
"prerequisites": [],
"fixed_versions": [
{
"value": "5.15.163",
"evidence": "/affected/1/ranges"
},
{
"value": "6.1.100",
"evidence": "/affected/1/ranges"
},
{
"value": "6.6.41",
"evidence": "/affected/1/ranges"
},
{
"value": "6.9.10",
"evidence": "/affected/1/ranges"
}
],
"affected_versions": []
}
],
"severity": "unknown",
"structured": {
"id": "CVE-2024-41047",
"aliases": [
"CVE-2024-41047"
],
"affected": [
{
"ranges": [
{
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"type": "GIT",
"events": [
{
"introduced": "b82364abc54b19829b26459989d2781fc4822c28"
},
{
"fixed": "b399a68054dfb36eed121846ef5fcddba40b7740"
}
]
},
{
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"type": "GIT",
"events": [
{
"introduced": "6533e558c6505e94c3e0ed4281ed5e31ec985f4d"
},
{
"fixed": "4bc336b2345f1485438c0eb7246d9c8a8d09f8ff"
},
{
"fixed": "5266302cb2c74d8ab0e9a69d5752fffaea70496e"
},
{
"fixed": "0075b8c94d76830c7b6f018f6e4eeb0bf6465fdc"
},
{
"fixed": "01fc5142ae6b06b61ed51a624f2732d6525d8ea3"
}
]
},
{
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"type": "GIT",
"events": [
{
"introduced": "5.15.20"
},
{
"fixed": "5.15.163"
}
]
},
{
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"type": "GIT",
"events": [
{
"introduced": "5.16.6"
},
{
"fixed": "5.17"
}
]
},
{
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"type": "GIT",
"events": [
{
"introduced": "2754d83160c96ae22afff8687ddb575d3b790587"
}
]
}
],
"versions": [
"v5.15.162",
"v5.15.161",
"v5.15.160",
"v5.15.159",
"v5.15.158",
"v5.15.157",
"v5.15.156",
"v5.15.155",
"v5.15.154",
"v5.15.153",
"v5.15.152",
"v5.15.151",
"v5.15.150",
"v5.15.149",
"v5.15.148",
"v5.15.147",
"v5.15.146",
"v5.15.145",
"v5.15.144",
"v5.15.143",
"v5.15.142",
"v5.15.141",
"v5.15.140",
"v5.15.139",
"v5.15.138",
"v5.15.137",
"v5.15.136",
"v5.15.135",
"v5.15.134",
"v5.15.133",
"v5.15.132",
"v5.15.131",
"v5.15.130",
"v5.15.129",
"v5.15.128",
"v5.15.127",
"v5.15.126",
"v5.15.125",
"v5.15.124",
"v5.15.123",
"v5.15.122",
"v5.15.121",
"v5.15.120",
"v5.15.119",
"v5.15.118",
"v5.15.117",
"v5.15.116",
"v5.15.115",
"v5.15.114",
"v5.15.113",
"v5.15.112",
"v5.15.111",
"v5.15.110",
"v5.15.109",
"v5.15.108",
"v5.15.107",
"v5.15.106",
"v5.15.105",
"v5.15.104",
"v5.15.103",
"v5.15.102",
"v5.15.101",
"v5.15.100",
"v5.15.99",
"v5.15.98",
"v5.15.97",
"v5.15.96",
"v5.15.95",
"v5.15.94",
"v5.15.93",
"v5.15.92",
"v5.15.91",
"v5.15.90",
"v5.15.89",
"v5.15.88",
"v5.15.87",
"v5.15.86",
"v5.15.85",
"v5.15.84",
"v5.15.83",
"v5.15.82",
"v5.15.81",
"v5.15.80",
"v5.15.79",
"v5.15.78",
"v5.15.77",
"v5.15.76",
"v5.15.75",
"v5.15.74",
"v5.15.73",
"v5.15.72",
"v5.15.71",
"v5.15.70",
"v5.15.69",
"v5.15.68",
"v5.15.67",
"v5.15.66",
"v5.15.65",
"v5.15.64",
"v5.15.63",
"v5.15.62",
"v5.15.61",
"v5.15.60",
"v5.15.59",
"v5.15.58",
"v5.15.57",
"v5.15.56",
"v5.15.55",
"v5.15.54",
"v5.15.53",
"v5.15.52",
"v5.15.51",
"v5.15.50",
"v5.15.49",
"v5.15.48",
"v5.15.47",
"v5.15.46",
"v5.15.45",
"v5.15.44",
"v5.15.43",
"v5.15.42",
"v5.15.41",
"v5.15.40",
"v5.15.39",
"v5.15.38",
"v5.15.37",
"v5.15.36",
"v5.15.35",
"v5.15.34",
"v5.15.33",
"v5.15.32",
"v5.15.31",
"v5.15.30",
"v5.15.29",
"v5.15.28",
"v5.15.27",
"v5.15.26",
"v5.15.25",
"v5.15.24",
"v5.15.23",
"v5.15.22",
"v5.15.21",
"v5.15.20",
"v5.16.20",
"v5.16.19",
"v5.16.18",
"v5.16.17",
"v5.16.16",
"v5.16.15",
"v5.16.14",
"v5.16.13",
"v5.16.12",
"v5.16.11",
"v5.16.10",
"v5.16.9",
"v5.16.8",
"v5.16.7",
"v5.16.6"
],
"database_specific": {
"source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2024-41047.json"
}
},
{
"ranges": [
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "0"
},
{
"fixed": "5.15.163"
}
]
},
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "5.16.0"
},
{
"fixed": "6.1.100"
}
]
},
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "5.17.0"
},
{
"fixed": "6.6.41"
}
]
},
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "6.2.0"
},
{
"fixed": "6.9.10"
}
]
}
],
"package": {
"name": "Kernel",
"ecosystem": "Linux"
},
"database_specific": {
"source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2024-41047.json"
}
}
],
"modified": "2026-10-28T02:30:42.458169719Z",
"provider": "osv",
"references": [
"https://git.kernel.org/stable/c/0075b8c94d76830c7b6f018f6e4eeb0bf6465fdc",
"https://git.kernel.org/stable/c/01fc5142ae6b06b61ed51a624f2732d6525d8ea3",
"https://git.kernel.org/stable/c/4bc336b2345f1485438c0eb7246d9c8a8d09f8ff",
"https://git.kernel.org/stable/c/5266302cb2c74d8ab0e9a69d5752fffaea70496e",
"https://git.kernel.org/stable/c/b399a68054dfb36eed121846ef5fcddba40b7740",
"https://lists.debian.org/debian-lts-announce/2025/01/msg00001.html",
"https://github.com/CVEProject/cvelistV5/tree/main/cves/2024/41xxx/CVE-2024-41047.json",
"https://nvd.nist.gov/vuln/detail/CVE-2024-41047",
"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git"
],
"provider_metadata": {
"cna_assigner": "Linux",
"osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2024/41xxx/CVE-2024-41047.json"
}
},
"related_cves": [
{
"value": "CVE-2024-41047",
"evidence": "/id"
}
],
"security_relevant": true,
"severity_evidence": null
},
"source_id": "core-osv",
"document_id": 510249,
"published_at": "2024-07-29T14:32:04.402+00:00"
}