On 06/13/22 at 12:00pm, Uladzislau Rezki wrote: > > vmalloc does not allocate a vm_struct for vm_map_ram() areas. That causes > > us to deny usercopies from those areas. This affects XFS which uses > > vm_map_ram() for its directories. > > > > Fix this by calling find_vmap_area() instead of find_vm_area(). > > > > Fixes: 0aef499f3172 ("mm/usercopy: Detect vmalloc overruns") > > Signed-off-by: Matthew Wilcox (Oracle) <willy@xxxxxxxxxxxxx> > > --- > > include/linux/vmalloc.h | 1 + > > mm/usercopy.c | 8 +++++--- > > mm/vmalloc.c | 2 +- > > 3 files changed, 7 insertions(+), 4 deletions(-) > > > > diff --git a/include/linux/vmalloc.h b/include/linux/vmalloc.h > > index b159c2789961..096d48aa3437 100644 > > --- a/include/linux/vmalloc.h > > +++ b/include/linux/vmalloc.h > > @@ -215,6 +215,7 @@ extern struct vm_struct *__get_vm_area_caller(unsigned long size, > > void free_vm_area(struct vm_struct *area); > > extern struct vm_struct *remove_vm_area(const void *addr); > > extern struct vm_struct *find_vm_area(const void *addr); > > +struct vmap_area *find_vmap_area(unsigned long addr); > Make it "extern" since it becomes globally visible? extern is not suggested any more to add for function declaration in header file, and removing it doesn't impact thing. > > -- > Uladzislau Rezki >