On Wed, Oct 19, 2022 at 12:21:17AM +0800, Zhao Liu wrote: > From: Zhao Liu <zhao1.liu@xxxxxxxxx> > > The commit 154fb14df7a3c ("x86/hyperv: Replace kmap() with > kmap_local_page()") keeps the BUG_ON() to check if kmap_local_page() > fails. > > But in fact, kmap_local_page() always returns a valid kernel address > and won't return NULL here. It will BUG on its own if it fails. [1] > > So directly use memcpy_to_page() which creates local mapping to copy. > > [1]: https://lore.kernel.org/lkml/YztFEyUA48et0yTt@iweiny-mobl/ > > Fixes: 154fb14df7a3 ("x86/hyperv: Replace kmap() with kmap_local_page()") I don't know that a fixes is required here. We are not looking to backport any of this and the other patch was correct. This is just a follow on cleanup. > Suggested-by: Fabio M. De Francesco <fmdefrancesco@xxxxxxxxx> > Suggested-by: Ira Weiny <ira.weiny@xxxxxxxxx> Code looks good. Without the fixes. Reviewed-by: Ira Weiny <ira.weiny@xxxxxxxxx> > Signed-off-by: Zhao Liu <zhao1.liu@xxxxxxxxx> > --- > arch/x86/hyperv/hv_init.c | 6 ++---- > 1 file changed, 2 insertions(+), 4 deletions(-) > > diff --git a/arch/x86/hyperv/hv_init.c b/arch/x86/hyperv/hv_init.c > index 29774126e931..f66c5709324f 100644 > --- a/arch/x86/hyperv/hv_init.c > +++ b/arch/x86/hyperv/hv_init.c > @@ -459,13 +459,11 @@ void __init hyperv_init(void) > wrmsrl(HV_X64_MSR_HYPERCALL, hypercall_msr.as_uint64); > > pg = vmalloc_to_page(hv_hypercall_pg); > - dst = kmap_local_page(pg); > src = memremap(hypercall_msr.guest_physical_address << PAGE_SHIFT, PAGE_SIZE, > MEMREMAP_WB); > - BUG_ON(!(src && dst)); > - memcpy(dst, src, HV_HYP_PAGE_SIZE); > + BUG_ON(!src); > + memcpy_to_page(pg, 0, src, HV_HYP_PAGE_SIZE); > memunmap(src); > - kunmap_local(dst); > } else { > hypercall_msr.guest_physical_address = vmalloc_to_pfn(hv_hypercall_pg); > wrmsrl(HV_X64_MSR_HYPERCALL, hypercall_msr.as_uint64); > -- > 2.34.1 >