CVE-2025-40164: usbnet: Fix using smp_processor_id() in preemptible code warnings
In the Linux kernel, the following vulnerability has been resolved:
usbnet: Fix using smpprocessorid() in preemptible code warnings
Syzbot reported the following warning:
BUG: using smpprocessorid() in preemptible [00000000] code: dhcpcd/2879 caller is usbnetskbreturn+0x74/0x490 drivers/net/usb/usbnet.c:331 CPU: 1 UID: 0 PID: 2879 Comm: dhcpcd Not tainted 6.15.0-rc4-syzkaller-00098-g615dca38c2ea #0 PREEMPT(voluntary) Call Trace: <TASK> dumpstack lib/dumpstack.c:94 [inline] dumpstacklvl+0x16c/0x1f0 lib/dumpstack.c:120 checkpreemptiondisabled+0xd0/0xe0 lib/smpprocessorid.c:49 usbnetskbreturn+0x74/0x490 drivers/net/usb/usbnet.c:331 usbnetresumerx+0x4b/0x170 drivers/net/usb/usbnet.c:708 usbnetchangemtu+0x1be/0x220 drivers/net/usb/usbnet.c:417 devsetmtu net/core/dev.c:9443 [inline] netifsetmtuext+0x369/0x5c0 net/core/dev.c:9496 netifsetmtu+0xb0/0x160 net/core/dev.c:9520 devsetmtu+0xae/0x170 net/core/devapi.c:247 devifsioc+0xa31/0x18d0 net/core/devioctl.c:572 devioctl+0x223/0x10e0 net/core/devioctl.c:821 sockdoioctl+0x19d/0x280 net/socket.c:1204 sockioctl+0x42f/0x6a0 net/socket.c:1311 vfsioctl fs/ioctl.c:51 [inline] dosysioctl fs/ioctl.c:906 [inline] sesysioctl fs/ioctl.c:892 [inline] x64sysioctl+0x190/0x200 fs/ioctl.c:892 dosyscallx64 arch/x86/entry/syscall64.c:63 [inline] dosyscall64+0xcd/0x260 arch/x86/entry/syscall64.c:94 entrySYSCALL64afterhwframe+0x77/0x7f
For historical and portability reasons, the netifrx() is usually run in the softirq or interrupt context, this commit therefore add localbhdisable/enable() protection in the usbnetresumerx().
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Configuration
Add local_bh_disable() at the start and local_bh_enable() at the end of usbnet_resume_rx() (and surrounding code paths as appropriate) to protect against calling smp_processor_id() from preemptible context and eliminate the preemptible-code warning.
Linux kernel drivers/net/usb/usbnet (usbnet_resume_rx) local_bh_disable/enable protection = add local_bh_disable(); ... local_bh_enable()
Event History
Frequently Asked Questions
What is the severity of CVE-2025-40164?
CVE-2025-40164 has been classified as a moderate severity vulnerability affecting the Linux kernel.
How do I fix CVE-2025-40164?
To fix CVE-2025-40164, update your Linux kernel to the latest patched version that addresses this vulnerability.
What type of vulnerability is CVE-2025-40164?
CVE-2025-40164 is a preemptibility issue related to improper usage of smp_processor_id() in the Linux kernel.
Which systems are affected by CVE-2025-40164?
CVE-2025-40164 affects systems running vulnerable versions of the Linux kernel.
What is the impact of CVE-2025-40164?
The impact of CVE-2025-40164 can lead to potential instability in kernel operations due to incorrect processor identification in preemptible code.