Re: parisc: fix mmap(MAP_FIXED|MAP_SHARED) to already mmapped address

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thursday 19 December 2013 14:44:40 John David Anglin wrote:
> On 12/19/2013 2:17 PM, Aaro Koskinen wrote:
> > This commit (0576da2c08e3d332f1b0653030d28ab804585ab6) and the current
> > mainline kernel (3.13-rc4) gives me the following with GLIBC 2.18:
> > 
> > $ localedef -c -i en_US -f UTF-8 en_US.UTF-8
> > cannot map archive header: Invalid argument
> > 
> > strace looks like this:
> > 
> > mmap2(NULL, 536870912, PROT_NONE, MAP_SHARED, 3, 0) = 0x42f34000
> > mmap2(0x43000000, 1607632, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_FIXED, 3,
> > 0) = -1 EINVAL (Invalid argument)
> > 
> > With the patch reverted, it works:
> > 
> > mmap2(NULL, 536870912, PROT_NONE, MAP_SHARED, 3, 0) = 0x42d74000
> > mmap2(0x43000000, 1607632, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_FIXED, 3,
> > 0) = 0x43000000
> > 
> > BTW, note that for GLIBC 2.18 some changes were done regarding this:
> > https://sourceware.org/bugzilla/show_bug.cgi?id=10283
> 
> Are you sure the glibc changes are correct?  PARISC addresses are not
> strictly aligned to SHMLBA.
> There's also a page offset and "random" offset derived from the kernel
> address of the mapping struct.

the glibc changes were to use SHMLBA as the min alignment where as before it 
was using PAGE_SIZE.  the kernel shouldn't reject us because we manually 
increased our alignment ... the mappings should still be overlapping, so it 
shouldn't be an "out of mapping space" issue.

the first one gets a really large map (not fixed), and then the second does a 
small mapping inside of that first one.
-mike

Attachment: signature.asc
Description: This is a digitally signed message part.


[Index of Archives]     [Linux SoC]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux