In the function jailhouse_hypervisor_enable(), jumping to the label error_unmap results in a call to jailhouse_free_firmware() which releases hypervisor_mem_res and sets it to NULL. However, the execution proceeds to the label error_release_memreg and tries to access hypervisor_mem_res->start, which triggers a NULL pointer reference.
Fix the problem for explicitly checking against the NULL pointer. Signed-off-by: Göktürk Yüksek <[email protected]> --- driver/main.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/driver/main.c b/driver/main.c index 732a54a..8e0e79e 100644 --- a/driver/main.c +++ b/driver/main.c @@ -558,8 +558,11 @@ error_unmap: iounmap(clock_reg); error_release_memreg: - release_mem_region(hypervisor_mem_res->start, - resource_size(hypervisor_mem_res)); + /* It is possible that a previous call to jailhouse_firmware_free() + * might have released the hypervisor_mem already. */ + if (hypervisor_mem_res) + release_mem_region(hypervisor_mem_res->start, + resource_size(hypervisor_mem_res)); hypervisor_mem_res = NULL; error_release_fw: -- 2.10.2 -- You received this message because you are subscribed to the Google Groups "Jailhouse" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
