Moving keep-alive into nvme_uninit_ctrl() fixes kernel panic in nvme/004
CVE-2024-45013
What is CVE-2024-45013?
In the Linux kernel, the following vulnerability has been resolved:
nvme: move stopping keep-alive into nvme_uninit_ctrl()
Commit 4733b65d82bd ("nvme: start keep-alive after admin queue setup") moves starting keep-alive from nvme_start_ctrl() into nvme_init_ctrl_finish(), but don't move stopping keep-alive into nvme_uninit_ctrl(), so keep-alive work can be started and keep pending after failing to start controller, finally use-after-free is triggered if nvme host driver is unloaded.
This patch fixes kernel panic when running nvme/004 in case that connection failure is triggered, by moving stopping keep-alive into nvme_uninit_ctrl().
This way is reasonable because keep-alive is now started in nvme_init_ctrl_finish().
Affected Version(s)
Linux 3af755a46881c32fecaecfdeaf3a8f0a869deca5 < 4101af98ab573554c4225e328d506fec2a74bc54
Linux 3af755a46881c32fecaecfdeaf3a8f0a869deca5
Linux 6.7