CVE-2024-40906 Information
Description
In the Linux kernel the following vulnerability has been resolved:
net/mlx5: Always stop health timer during driver removal
Currently if teardown_hca fails to execute during driver removal mlx5 does not stop the health timer. Afterwards mlx5 continue with driver teardown. This may lead to a UAF bug which results in page fault Oops[1] since the health timer invokes after resources were freed.
Hence stop the health monitor even if teardown_hca fails.
[1]
mlx5_core 0000:18:00.0: E-Switch: Unload vfs: mode(LEGACY) nvfs(0) necvfs(0) active vports(0)
mlx5_core 0000:18:00.0: E-Switch: Disable: mode(LEGACY) nvfs(0) necvfs(0) active vports(0)
mlx5_core 0000:18:00.0: E-Switch: Disable: mode(LEGACY) nvfs(0) necvfs(0) active vports(0)
mlx5_core 0000:18:00.0: E-Switch: cleanup
mlx5_core 0000:18:00.0: wait_func:1155:(pid 1967079): TEARDOWN_HCA(0x103) timeout. Will cause a leak of a command resource
mlx5_core 0000:18:00.0: mlx5_function_close:1288:(pid 1967079): tear_down_hca failed skip cleanup
BUG: unable to handle page fault for address: ffffa26487064230
PGD 100c00067 P4D 100c00067 PUD 100e5a067 PMD 105ed7067 PTE 0
Oops: 0000 [1] PREEMPT SMP PTI
CPU: 0 PID: 0 Comm: swapper/0 Tainted: G OE ——- — 6.7.0-68.fc38.x86_64 1
Hardware name: Intel Corporation S2600WFT/S2600WFT BIOS SE5C620.86B.02.01.0013.121520200651 12/15/2020
RIP: 0010:ioread32be+0x34/0x60
RSP: 0018:ffffa26480003e58 EFLAGS: 00010292
RAX: ffffa26487064200 RBX: ffff9042d08161a0 RCX: ffff904c108222c0
RDX: 000000010bbf1b80 RSI: ffffffffc055ddb0 RDI: ffffa26487064230
RBP: ffff9042d08161a0 R08: 0000000000000022 R09: ffff904c108222e8
R10: 0000000000000004 R11: 0000000000000441 R12: ffffffffc055ddb0
R13: ffffa26487064200 R14: ffffa26480003f00 R15: ffff904c108222c0
FS: 0000000000000000(0000) GS:ffff904c10800000(0000) knlGS:0000000000000000
CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: ffffa26487064230 CR3: 00000002c4420006 CR4: 00000000007706f0
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
PKRU: 55555554
Call Trace:
Reference
https://git.kernel.org/stable/c/e7d4485d47839f4d1284592ae242c4e65b2810a9 https://git.kernel.org/stable/c/6ccada6ffb42e0ac75e3db06d41baf5a7f483f8a https://git.kernel.org/stable/c/e6777ae0bf6fd5bc626bb051c8c93e3c8198a3f8 https://git.kernel.org/stable/c/c8b3f38d2dae0397944814d691a419c451f9906f
Share on: