Re: [x86, vdso] BUG: unable to handle kernel paging request at d34bd000

From: H. Peter Anvin
Date: Mon Mar 10 2014 - 11:01:18 EST


On 03/09/2014 09:46 PM, Andy Lutomirski wrote:
> On Sun, Mar 9, 2014 at 8:18 PM, Andy Lutomirski <luto@xxxxxxxxxxxxxx> wrote:
>> (Of course, I haven't the faintest idea what l_addr in glibc means.
>> If there was a way to arrange for l_addr to be zero, then maybe none
>> of this would matter. Hmm, I wonder if just not relocating the vdso
>> at all would have the desired effect. Anyone out there understand
>> glibc?)
>
> No, that won't work. The bug is that glibc expects PT_DYNAMIC's vaddr
> to be the virtual address of the dynamic table. This can only be true
> if the vdso is mapped at the address that the kernel relocated it to.
>
> I also learned that glibc's code is really hideous. Wow.
>

At the same time it does mean we have more flexibility than having a
hard-coded address... we can at least allocate more than one page in the
fixmap; for a really "full service" solution the kernel could adjust the
vdso for whatever address the "fixmap" is at.

I have mentioned in the past wanting to move the fixmap to the low part
of the kernel space, because the top isn't really fixed...

-hpa


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/