If the hv_do_hypercall() succeeds on the first iteration then "ret" is not initialized. I re-arranged this code to make the loop clearer and to make it more clear that we return zero on the last line. Fixes: f5288d14069b ("Drivers: hv: Introduce mshv_root module to expose /dev/mshv to VMMs") Signed-off-by: Dan Carpenter <dan.carpenter@xxxxxxxxxx> --- drivers/hv/mshv_root_hv_call.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/hv/mshv_root_hv_call.c b/drivers/hv/mshv_root_hv_call.c index b72b59a5068b..a74e13a32183 100644 --- a/drivers/hv/mshv_root_hv_call.c +++ b/drivers/hv/mshv_root_hv_call.c @@ -733,7 +733,7 @@ int hv_call_map_stat_page(enum hv_stats_object_type type, u64 status, pfn; int ret; - do { + while (1) { local_irq_save(flags); input = *this_cpu_ptr(hyperv_pcpu_input_arg); output = *this_cpu_ptr(hyperv_pcpu_output_arg); @@ -756,11 +756,11 @@ int hv_call_map_stat_page(enum hv_stats_object_type type, hv_current_partition_id, 1); if (ret) return ret; - } while (!ret); + } *addr = page_address(pfn_to_page(pfn)); - return ret; + return 0; } int hv_call_unmap_stat_page(enum hv_stats_object_type type, -- 2.47.2