Re: [RFC] x86/vdso: Align vdso after searching for free area
- Date: Tue, 12 Jun 2018 22:24:11 +0100
- From: Dmitry Safonov <dima@xxxxxxxxxx>
- Subject: Re: [RFC] x86/vdso: Align vdso after searching for free area
On Tue, 2018-06-12 at 21:49 +0100, Dmitry Safonov wrote:
> There is errata for AMD family 15h CPUs  and since
> commit dfb09f9b7ab03 ("x86, amd: Avoid cache aliasing penalties on
> family 15h") bits [14:12] are being cleared for shared libraries.
> Also per-boot ASLR applies over upper bits by OR directly over the
> As we need special alignment and lower bits values to be set, it
> only a little sense to call get_unmapped_area() after calculating the
> address. It also can lead to random crashes if get_unmapped_area()
> actually changes/aligns the address, which we observed on 15h CPU.
> Usually it's not a problem as there isn't many mappings (except
> ld.so, uprobes?) and result address is the same before/after
> Move align_vdso_addr() after get_unmapped_area() to make sure that
> errata for AMD 15h is always applied.
Alternative dirty-hacky idea:
specify some (struct file*) to get_unmapped_area() for vdso vma, then
mapping would be automatically aligned. Dirty as hell as relies on
get_unmapped_area() realization details.