On Fri, 2017-08-11 at 09:36 -0700, Mike Kravetz wrote: > On 08/11/2017 08:23 AM, Rik van Riel wrote: > > On Thu, 2017-08-10 at 17:23 +0200, Michal Hocko wrote: > > > On Sun 06-08-17 10:04:25, Rik van Riel wrote: > > > [...] > > > > diff --git a/kernel/fork.c b/kernel/fork.c > > > > index 17921b0390b4..db1fb2802ecc 100644 > > > > --- a/kernel/fork.c > > > > +++ b/kernel/fork.c > > > > @@ -659,6 +659,13 @@ static __latent_entropy int > > > > dup_mmap(struct > > > > mm_struct *mm, > > > > tmp->vm_flags &= ~(VM_LOCKED | > > > > VM_LOCKONFAULT); > > > > tmp->vm_next = tmp->vm_prev = NULL; > > > > file = tmp->vm_file; > > > > + > > > > + /* With VM_WIPEONFORK, the child gets an empty > > > > VMA. */ > > > > + if (tmp->vm_flags & VM_WIPEONFORK) { > > > > + tmp->vm_file = file = NULL; > > > > + tmp->vm_ops = NULL; > > > > + } > > > > > > What about VM_SHARED/|VM)MAYSHARE flags. Is it OK to keep the > > > around? > > > At > > > least do_anonymous_page SIGBUS on !vm_ops && VM_SHARED. Or do I > > > miss > > > where those flags are cleared? > > > > Huh, good spotting. That makes me wonder why the test case that > > Mike and I ran worked just fine on a MAP_SHARED|MAP_ANONYMOUS VMA, > > and returned zero-filled memory when read by the child process. > > Well, I think I still got a BUG with a MAP_SHARED|MAP_ANONYMOUS vma > on > your v2 patch. Did not really want to start a discussion on the > implementation until the issue of exactly what VM_WIPEONFORK was > supposed > to do was settled. It worked here, but now I don't understand why :) > > > > OK, I'll do a minimal implementation for now, which will return > > -EINVAL if MADV_WIPEONFORK is called on a VMA with MAP_SHARED > > and/or an mmapped file. > > > > It will work the way it is supposed to with anonymous MAP_PRIVATE > > memory, which is likely the only memory it will be used on, anyway. > > > > Seems reasonable. > > You should also add VM_HUGETLB to those returning -EINVAL. IIRC, a > VM_HUGETLB vma even without VM_SHARED expects vm_file != NULL. In other words (flags & MAP_SHARED || vma->vm_file) would catch hugetlbfs, too? -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>