| From cce33f6669a35053a3e86797f74c6dd024369432 Mon Sep 17 00:00:00 2001 |
| From: Tianyu Lan <Tianyu.Lan@microsoft.com> |
| Date: Mon, 6 Apr 2020 08:53:27 -0700 |
| Subject: [PATCH] x86/Hyper-V: Free hv_panic_page when fail to register kmsg |
| dump |
| |
| commit 7f11a2cc10a4ae3a70e2c73361f4a9a33503539b upstream. |
| |
| If kmsg_dump_register() fails, hv_panic_page will not be used |
| anywhere. So free and reset it. |
| |
| Fixes: 81b18bce48af ("Drivers: HV: Send one page worth of kmsg dump over Hyper-V during panic") |
| Reviewed-by: Michael Kelley <mikelley@microsoft.com> |
| Signed-off-by: Tianyu Lan <Tianyu.Lan@microsoft.com> |
| Link: https://lore.kernel.org/r/20200406155331.2105-3-Tianyu.Lan@microsoft.com |
| Signed-off-by: Wei Liu <wei.liu@kernel.org> |
| Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> |
| |
| diff --git a/drivers/hv/vmbus_drv.c b/drivers/hv/vmbus_drv.c |
| index 7ff0e8dbf5ef..3163664c74dd 100644 |
| --- a/drivers/hv/vmbus_drv.c |
| +++ b/drivers/hv/vmbus_drv.c |
| @@ -1319,9 +1319,12 @@ static int vmbus_bus_init(void) |
| hv_panic_page = (void *)get_zeroed_page(GFP_KERNEL); |
| if (hv_panic_page) { |
| ret = kmsg_dump_register(&hv_kmsg_dumper); |
| - if (ret) |
| + if (ret) { |
| pr_err("Hyper-V: kmsg dump register " |
| "error 0x%x\n", ret); |
| + free_page((unsigned long)hv_panic_page); |
| + hv_panic_page = NULL; |
| + } |
| } else |
| pr_err("Hyper-V: panic message page memory " |
| "allocation failed"); |
| @@ -1349,7 +1352,6 @@ static int vmbus_bus_init(void) |
| hv_remove_vmbus_irq(); |
| |
| bus_unregister(&hv_bus); |
| - free_page((unsigned long)hv_panic_page); |
| unregister_sysctl_table(hv_ctl_table_hdr); |
| hv_ctl_table_hdr = NULL; |
| return ret; |
| -- |
| 2.7.4 |
| |