Re: [PATCH] x86/KASLR: use the right memcpy

From: Baoquan He
Date: Tue May 30 2017 - 21:43:23 EST


On 05/30/17 at 04:24pm, Arnd Bergmann wrote:
> On Tue, May 30, 2017 at 3:56 PM, Baoquan He <bhe@xxxxxxxxxx> wrote:
> > On 05/30/17 at 11:14am, Arnd Bergmann wrote:
> >> The decompressor has its own implementation of the string functions,
> >> but has to include the right header to get those, while implicitly
> >> including linux/string.h may result in a link error:
> >>
> >> arch/x86/boot/compressed/kaslr.o: In function `choose_random_location':
> >> kaslr.c:(.text+0xf51): undefined reference to `_mmx_memcpy'
> >>
> >> This has appeared now as kaslr started using memcpy. Other files in the
> >> decompressor already do the same thing.
> >>
> >> Fixes: d52e7d5a952c ("x86/KASLR: Parse all 'memmap=' boot option entries")
> >> Signed-off-by: Arnd Bergmann <arnd@xxxxxxxx>
> >
> > Thanks for this fix, Arnd!
> >
> > The linking error didn't happen when I tested the patch of d52e7d5a952c.
> > Could you tell in what condition it will be triggered? Not sure if I
> > should wait for this fix being merged and do a back porting, or can
> > defer it if it's not risky.
>
> It only happens on 32-bit kernels with CONFIG_X86_USE_3DNOW, maybe
> there are additional requirements.

Checked code again, in commit d52e7d5a952c "#include "../boot.h" is
removed. Not sure if that removal caused the 32-bit kernel link error.
While I didn't see boot/string.h is included into the boot/boot.h.