From d092393f507d9605310aa82be5f9e147038ecc4c Mon Sep 17 00:00:00 2001 From: Naman Jain Date: Wed, 10 Jun 2026 04:52:11 +0000 Subject: [PATCH] Drivers: hv: mshv_vtl: remove duplicate misc_deregister() in module exit mshv_vtl_exit() calls misc_deregister(&mshv_vtl_sint_dev) and misc_deregister(&mshv_vtl_low) twice. The first pair (added when the TDX APIC handling code was introduced) is redundant: the same deregistrations are performed again a few lines below, in the order that mirrors the registration sequence in mshv_vtl_init(). Calling misc_deregister() twice on the same struct miscdevice is not safe -- it ends up doing list_del() twice on the device's misc_list node, corrupting the global list and yielding 'list_del corruption' splats on rmmod (or any module exit path). Drop the redundant calls so each device is deregistered exactly once, in the reverse order of registration. Fixes: 06eb1e39a16b ("mshv_vtl/tdx: Handle some APIC functionality in kernel") Signed-off-by: Naman Jain --- drivers/hv/mshv_vtl_main.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/drivers/hv/mshv_vtl_main.c b/drivers/hv/mshv_vtl_main.c index eaa741421dd1..c6c59c521dce 100644 --- a/drivers/hv/mshv_vtl_main.c +++ b/drivers/hv/mshv_vtl_main.c @@ -4098,8 +4098,6 @@ static void __exit mshv_vtl_exit(void) ms_hyperv_free_redirected_intr(); mshv_free_apicid_to_cpuid_mapping(); - misc_deregister(&mshv_vtl_sint_dev); - misc_deregister(&mshv_vtl_low); device_del(mem_dev); kfree(mem_dev); mshv_vtl_sidecar_exit();