Re: 2.6.23 regression: accessing invalid mmap'ed memory from gdb causes unkillable spinning

Nick Piggin
2007-11-01T23:56:56Z

On Thu, Nov 01, 2007 at 09:08:45AM -0700, Linus Torvalds wrote:
>
>
> On Thu, 1 Nov 2007, Nick Piggin wrote:
> >
> > Untested patch follows
>
> Ok, this looks ok.
>
> Except I would remove the VM_MAYSHARE bit from the test.

But we do want to allow forced COW faults for MAP_PRIVATE mappings. gdb
uses this for inserting breakpoints (but fortunately, a COW page in a
MAP_PRIVATE mapping is a much more natural thing for the VM).

> That whole bit should go, in fact.
>
> We used to make it something different: iirc, a read-only SHARED mapping
> was downgraded to a non-shared mapping, because we wanted to avoid some of
> the costs we used to have with the VM implementation (actually, I think it
> was various filesystems that don't like shared mappings because they don't
> have a per-page writeback). But we left the VM_MAYSHARE bit on, to get
> /proc/<pid>/mmap things right.
>
> Or something like that. I forget the details. But I *think* we don't
> actually need this any more.
>
> But basically, the "right" way to test for shared mappings is historically
> to just test the VM_MAYSHARE bit - but not *both* bits. Because VM_SHARE
> may have been artificially cleared.

I think you're right -- VM_MAYSHARE is basically testing for MAP_SHARED.
I just don't know exactly what you're proposing here.

Thanks,
Nick