* David Hildenbrand <david@xxxxxxxxxx> [210909 11:01]: > We should not walk/touch page tables outside of VMA boundaries when > holding only the mmap sem in read mode. Evil user space can modify the > VMA layout just before this function runs and e.g., trigger races with > page table removal code since commit dd2283f2605e ("mm: mmap: zap pages > with read mmap_sem in munmap"). > > find_vma() does not check if the address is >= the VMA start address; > use vma_lookup() instead. > > Fixes: 214d9bbcd3a6 ("s390/mm: provide memory management functions for protected KVM guests") > Signed-off-by: David Hildenbrand <david@xxxxxxxxxx> > --- > arch/s390/kernel/uv.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/arch/s390/kernel/uv.c b/arch/s390/kernel/uv.c > index aeb0a15bcbb7..193205fb2777 100644 > --- a/arch/s390/kernel/uv.c > +++ b/arch/s390/kernel/uv.c > @@ -227,7 +227,7 @@ int gmap_make_secure(struct gmap *gmap, unsigned long gaddr, void *uvcb) > uaddr = __gmap_translate(gmap, gaddr); > if (IS_ERR_VALUE(uaddr)) > goto out; > - vma = find_vma(gmap->mm, uaddr); > + vma = vma_lookup(gmap->mm, uaddr); > if (!vma) > goto out; > /* > -- > 2.31.1 > > Reviewed-by: Liam R. Howlett <Liam.Howlett@xxxxxxxxxx>