]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
mshv: clean up SynIC state on kexec for L1VH
authorJork Loeser <jloeser@linux.microsoft.com>
Mon, 27 Apr 2026 21:38:53 +0000 (14:38 -0700)
committerWei Liu <wei.liu@kernel.org>
Wed, 29 Apr 2026 22:56:53 +0000 (22:56 +0000)
The reboot notifier that tears down the SynIC cpuhp state guards the
cleanup with hv_root_partition(), so on L1VH (where
hv_root_partition() is false) SINT0, SINT5, and SIRBP are never
cleaned up before kexec. The kexec'd kernel then inherits stale
unmasked SINTs and an enabled SIRBP pointing to freed memory.

Remove the hv_root_partition() guard so the cleanup runs for all
parent partitions.

Signed-off-by: Jork Loeser <jloeser@linux.microsoft.com>
Reviewed-by: Stanislav Kinsburskii <skinsburskii@linux.microsoft.com>
Reviewed-by: Anirudh Rayabharam (Microsoft) <anirudh@anirudhrb.com>
Signed-off-by: Wei Liu <wei.liu@kernel.org>
drivers/hv/mshv_synic.c

index 2db3b0192eac7412d3eef676e98366b2437f5f1e..978a1cace3410bf53e438156bd1721f94c0c1e9e 100644 (file)
@@ -723,9 +723,6 @@ mshv_unregister_doorbell(u64 partition_id, int doorbell_portid)
 static int mshv_synic_reboot_notify(struct notifier_block *nb,
                              unsigned long code, void *unused)
 {
-       if (!hv_root_partition())
-               return 0;
-
        cpuhp_remove_state(synic_cpuhp_online);
        return 0;
 }