CVE-2024-40906
Severity CVSS v4.0:
Pending analysis
Type:
CWE-416
Use After Free
Publication date:
12/07/2024
Last modified:
03/11/2025
Description
In the Linux kernel, the following vulnerability has been resolved:<br />
<br />
net/mlx5: Always stop health timer during driver removal<br />
<br />
Currently, if teardown_hca fails to execute during driver removal, mlx5<br />
does not stop the health timer. Afterwards, mlx5 continue with driver<br />
teardown. This may lead to a UAF bug, which results in page fault<br />
Oops[1], since the health timer invokes after resources were freed.<br />
<br />
Hence, stop the health monitor even if teardown_hca fails.<br />
<br />
[1]<br />
mlx5_core 0000:18:00.0: E-Switch: Unload vfs: mode(LEGACY), nvfs(0), necvfs(0), active vports(0)<br />
mlx5_core 0000:18:00.0: E-Switch: Disable: mode(LEGACY), nvfs(0), necvfs(0), active vports(0)<br />
mlx5_core 0000:18:00.0: E-Switch: Disable: mode(LEGACY), nvfs(0), necvfs(0), active vports(0)<br />
mlx5_core 0000:18:00.0: E-Switch: cleanup<br />
mlx5_core 0000:18:00.0: wait_func:1155:(pid 1967079): TEARDOWN_HCA(0x103) timeout. Will cause a leak of a command resource<br />
mlx5_core 0000:18:00.0: mlx5_function_close:1288:(pid 1967079): tear_down_hca failed, skip cleanup<br />
BUG: unable to handle page fault for address: ffffa26487064230<br />
PGD 100c00067 P4D 100c00067 PUD 100e5a067 PMD 105ed7067 PTE 0<br />
Oops: 0000 [#1] PREEMPT SMP PTI<br />
CPU: 0 PID: 0 Comm: swapper/0 Tainted: G OE ------- --- 6.7.0-68.fc38.x86_64 #1<br />
Hardware name: Intel Corporation S2600WFT/S2600WFT, BIOS SE5C620.86B.02.01.0013.121520200651 12/15/2020<br />
RIP: 0010:ioread32be+0x34/0x60<br />
RSP: 0018:ffffa26480003e58 EFLAGS: 00010292<br />
RAX: ffffa26487064200 RBX: ffff9042d08161a0 RCX: ffff904c108222c0<br />
RDX: 000000010bbf1b80 RSI: ffffffffc055ddb0 RDI: ffffa26487064230<br />
RBP: ffff9042d08161a0 R08: 0000000000000022 R09: ffff904c108222e8<br />
R10: 0000000000000004 R11: 0000000000000441 R12: ffffffffc055ddb0<br />
R13: ffffa26487064200 R14: ffffa26480003f00 R15: ffff904c108222c0<br />
FS: 0000000000000000(0000) GS:ffff904c10800000(0000) knlGS:0000000000000000<br />
CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033<br />
CR2: ffffa26487064230 CR3: 00000002c4420006 CR4: 00000000007706f0<br />
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000<br />
DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400<br />
PKRU: 55555554<br />
Call Trace:<br />
<br />
? __die+0x23/0x70<br />
? page_fault_oops+0x171/0x4e0<br />
? exc_page_fault+0x175/0x180<br />
? asm_exc_page_fault+0x26/0x30<br />
? __pfx_poll_health+0x10/0x10 [mlx5_core]<br />
? __pfx_poll_health+0x10/0x10 [mlx5_core]<br />
? ioread32be+0x34/0x60<br />
mlx5_health_check_fatal_sensors+0x20/0x100 [mlx5_core]<br />
? __pfx_poll_health+0x10/0x10 [mlx5_core]<br />
poll_health+0x42/0x230 [mlx5_core]<br />
? __next_timer_interrupt+0xbc/0x110<br />
? __pfx_poll_health+0x10/0x10 [mlx5_core]<br />
call_timer_fn+0x21/0x130<br />
? __pfx_poll_health+0x10/0x10 [mlx5_core]<br />
__run_timers+0x222/0x2c0<br />
run_timer_softirq+0x1d/0x40<br />
__do_softirq+0xc9/0x2c8<br />
__irq_exit_rcu+0xa6/0xc0<br />
sysvec_apic_timer_interrupt+0x72/0x90<br />
<br />
<br />
asm_sysvec_apic_timer_interrupt+0x1a/0x20<br />
RIP: 0010:cpuidle_enter_state+0xcc/0x440<br />
? cpuidle_enter_state+0xbd/0x440<br />
cpuidle_enter+0x2d/0x40<br />
do_idle+0x20d/0x270<br />
cpu_startup_entry+0x2a/0x30<br />
rest_init+0xd0/0xd0<br />
arch_call_rest_init+0xe/0x30<br />
start_kernel+0x709/0xa90<br />
x86_64_start_reservations+0x18/0x30<br />
x86_64_start_kernel+0x96/0xa0<br />
secondary_startup_64_no_verify+0x18f/0x19b<br />
---[ end trace 0000000000000000 ]---
Impact
Base Score 3.x
7.80
Severity 3.x
HIGH
Vulnerable products and versions
| CPE | From | Up to |
|---|---|---|
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.1 (including) | 6.1.95 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.2 (including) | 6.6.35 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.7 (including) | 6.9.6 (excluding) |
| cpe:2.3:o:linux:linux_kernel:6.10:rc1:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:6.10:rc2:*:*:*:*:*:* |
To consult the complete list of CPE names with products and versions, see this page
References to Advisories, Solutions, and Tools
- https://git.kernel.org/stable/c/6ccada6ffb42e0ac75e3db06d41baf5a7f483f8a
- https://git.kernel.org/stable/c/c8b3f38d2dae0397944814d691a419c451f9906f
- https://git.kernel.org/stable/c/e6777ae0bf6fd5bc626bb051c8c93e3c8198a3f8
- https://git.kernel.org/stable/c/e7d4485d47839f4d1284592ae242c4e65b2810a9
- https://git.kernel.org/stable/c/6ccada6ffb42e0ac75e3db06d41baf5a7f483f8a
- https://git.kernel.org/stable/c/c8b3f38d2dae0397944814d691a419c451f9906f
- https://git.kernel.org/stable/c/e6777ae0bf6fd5bc626bb051c8c93e3c8198a3f8
- https://git.kernel.org/stable/c/e7d4485d47839f4d1284592ae242c4e65b2810a9
- https://lists.debian.org/debian-lts-announce/2025/01/msg00001.html



