On Tue, Feb 15, 2022 at 10:40:02AM +0800, Miaohe Lin wrote: > On 2022/2/14 22:48, Naoya Horiguchi wrote: > > On Thu, Feb 10, 2022 at 10:17:27PM +0800, Miaohe Lin wrote: > >> It's unnecessary to walk the page table when vma_address() return -EFAULT. > >> Return early if so to save some cpu cycles. > >> > >> Signed-off-by: Miaohe Lin <linmiaohe@xxxxxxxxxx> > > > > Acked-by: Naoya Horiguchi <naoya.horiguchi@xxxxxxx> > > Many thanks for your review and Acked-by tag! You're welcome :) > > > > > Does this patch fix the real problem rather than just saving cpu cycles? > > Without this patch, "address == -EFAULT" seems to make pgd_offset() return > > invalid pointer and result in some serious result like general protection fault. > > I think you're right. We might dereference the invalid pointer in the following pagetable > walk and results in general protection fault. > > > If that's the case, this patch might be worth sending to stable. > > But I'am not sure vma_address will return -EFAULT for dax pages in the real workload? > If so, I will send a v2 with Fixes tag. Hm, actually I'm not sure either. But dev_pagemap_mapping_shift() is called only when vma associated to the error page is found already in collect_procs_{file,anon}, so vma_address() should not return -EFAULT except with some bug. So VM_BUG_ON() might be more suitable? Thanks, Naoya Horiguchi