It might happen that some hyp SynIC pages aren't allocated.

Check for that and only then call iounmap().

Signed-off-by: Roman Kisel <rom...@linux.microsoft.com>
---
 drivers/hv/hv.c | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

diff --git a/drivers/hv/hv.c b/drivers/hv/hv.c
index 820711e954d1..a8669843c56e 100644
--- a/drivers/hv/hv.c
+++ b/drivers/hv/hv.c
@@ -367,8 +367,10 @@ void hv_synic_disable_regs(unsigned int cpu)
         */
        simp.simp_enabled = 0;
        if (ms_hyperv.paravisor_present || hv_root_partition()) {
-               iounmap(hv_cpu->hyp_synic_message_page);
-               hv_cpu->hyp_synic_message_page = NULL;
+               if (hv_cpu->hyp_synic_message_page) {
+                       iounmap(hv_cpu->hyp_synic_message_page);
+                       hv_cpu->hyp_synic_message_page = NULL;
+               }
        } else {
                simp.base_simp_gpa = 0;
        }
@@ -379,8 +381,10 @@ void hv_synic_disable_regs(unsigned int cpu)
        siefp.siefp_enabled = 0;
 
        if (ms_hyperv.paravisor_present || hv_root_partition()) {
-               iounmap(hv_cpu->hyp_synic_event_page);
-               hv_cpu->hyp_synic_event_page = NULL;
+               if (hv_cpu->hyp_synic_event_page) {
+                       iounmap(hv_cpu->hyp_synic_event_page);
+                       hv_cpu->hyp_synic_event_page = NULL;
+               }
        } else {
                siefp.base_siefp_gpa = 0;
        }
-- 
2.43.0


Reply via email to