Commit
96c1d0581d00f7abe033350edb021a9d947d8d81 ("Drivers: hv: vmbus: Add
support for VMBus panic notifier handler") introduced
atomic_notifier_chain_register() call on module load. We also need to call
atomic_notifier_chain_unregister() on module unload as otherwise the following
crash is observed when we bring hv_vmbus back:
[ 39.788877] BUG: unable to handle kernel paging request at
ffffffffa00078a8
[ 39.788877] IP: [<
ffffffff8109d63f>] notifier_call_chain+0x3f/0x80
...
[ 39.788877] Call Trace:
[ 39.788877] [<
ffffffff8109de7d>] __atomic_notifier_call_chain+0x5d/0x90
...
[ 39.788877] [<
ffffffff8109d788>] ? atomic_notifier_chain_register+0x38/0x70
[ 39.788877] [<
ffffffff8109d767>] ? atomic_notifier_chain_register+0x17/0x70
[ 39.788877] [<
ffffffffa002814f>] hv_acpi_init+0x14f/0x1000 [hv_vmbus]
[ 39.788877] [<
ffffffff81002144>] do_one_initcall+0xd4/0x210
Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com>
Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
hv_synic_clockevents_cleanup();
hv_remove_vmbus_irq();
vmbus_free_channels();
+ if (ms_hyperv.features & HV_FEATURE_GUEST_CRASH_MSR_AVAILABLE) {
+ atomic_notifier_chain_unregister(&panic_notifier_list,
+ &hyperv_panic_block);
+ }
bus_unregister(&hv_bus);
hv_cleanup();
for_each_online_cpu(cpu)