In the Linux kernel, the following vulnerability has been resolved:
clocksource: Use migrate_disable() to avoid calling get_random_u32() in atomic context
The following bug report happened with a PREEMPT_RT kernel:
BUG: sleeping function called from invalid context at kernel/locking/spinlock_rt.c:48
in_atomic(): 1, irqs_disabled(): 0, non_block: 0, pid: 2012, name: kwatchdog
preempt_count: 1, expected: 0
RCU nest depth: 0, expected: 0
get_random_u32+0x4f/0x110
clocksource_verify_choose_cpus+0xab/0x1a0
clocksource_verify_percpu.part.0+0x6b/0x330
clocksource_watchdog_kthread+0x193/0x1a0
It is due to the fact that clocksource_verify_choose_cpus() is invoked with
preemption disabled. This function invokes get_random_u32() to obtain
random numbers for choosing CPUs. The batched_entropy_32 local lock and/or
the base_crng.lock spinlock in driver/char/random.c will be acquired during
the call. In PREEMPT_RT kernel, they are both sleeping locks and so cannot
be acquired in atomic context.
Fix this problem by using migrate_disable() to allow smp_processor_id() to
be reliably used without introducing atomic context. preempt_disable() is
then called after clocksource_verify_choose_cpus() but before the
clocksource measurement is being run to avoid introducing unexpected
latency.
References
Configurations
Configuration 1 (hide)
|
History
03 Nov 2025, 20:17
| Type | Values Removed | Values Added |
|---|---|---|
| References |
|
28 Oct 2025, 20:28
| Type | Values Removed | Values Added |
|---|---|---|
| CWE | CWE-667 | |
| CVSS |
v2 : v3 : |
v2 : unknown
v3 : 5.5 |
| CPE | cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* cpe:2.3:o:linux:linux_kernel:6.14:rc1:*:*:*:*:*:* |
|
| First Time |
Linux linux Kernel
Linux |
|
| References | () https://git.kernel.org/stable/c/0fb534187d2355f6c8f995321e76d1ccd1262ac1 - Patch | |
| References | () https://git.kernel.org/stable/c/60f54f0d4ea530950549a8263e6fdd70a40490a4 - Patch | |
| References | () https://git.kernel.org/stable/c/6bb05a33337b2c842373857b63de5c9bf1ae2a09 - Patch | |
| References | () https://git.kernel.org/stable/c/852805b6cbdb69c298a8fc9fbe79994c95106e04 - Patch | |
| References | () https://git.kernel.org/stable/c/8783ceeee797d9aa9cfe150690fb9d0bac8cc459 - Patch | |
| References | () https://git.kernel.org/stable/c/cc3d79e7c806cb57d71c28a4a35e7d7fb3265faa - Patch | |
| References | () https://git.kernel.org/stable/c/d9c217fadfcff7a8df58567517d1e4253f3fd243 - Patch |
13 Mar 2025, 13:15
| Type | Values Removed | Values Added |
|---|---|---|
| References |
|
|
| Summary |
|
27 Feb 2025, 03:15
| Type | Values Removed | Values Added |
|---|---|---|
| New CVE |
Information
Published : 2025-02-27 03:15
Updated : 2025-11-03 20:17
NVD link : CVE-2025-21767
Mitre link : CVE-2025-21767
CVE.ORG link : CVE-2025-21767
JSON object : View
Products Affected
linux
- linux_kernel
CWE
CWE-667
Improper Locking
