mshv_vtl: Check per-CPU register page before mmap

Register-page setup is optional for each CPU. If allocation or
registration fails, mshv_vtl_configure_reg_page() warns and leaves that
CPU's reg_page NULL, but initial context setup continues successfully.
Meanwhile, successful setup on another CPU sets the global
mshv_has_reg_page flag.

mshv_vtl_fault() checks this global flag before selecting the requested
CPU's register page. With mixed setup results across online CPUs, the
check passes even for a CPU with no register page, reaching
get_page(NULL) when userspace faults in that mapping.

Check the selected per-CPU register page before taking its reference and
return VM_FAULT_SIGBUS if it is absent.

Fixes: 7bfe3b8ea6 ("Drivers: hv: Introduce mshv_vtl driver")
Cc: [email protected]
Signed-off-by: Hardik Garg <[email protected]>
Reviewed-by: Naman Jain <[email protected]>
Signed-off-by: Wei Liu <[email protected]>
This commit is contained in:
Hardik Garg authored and Wei Liu committed 2026-09-19 16:02:34 -07:00
1 parent d5e6896960
commit 874194a8de
1 file changed
+3
+3
View File
@@ -819,6 +819,9 @@ static vm_fault_t mshv_vtl_fault(struct vm_fault *vmf)
return VM_FAULT_NOPAGE;
}
if (!page)
return VM_FAULT_SIGBUS;
get_page(page);
vmf->page = page;