Message ID | 1440605707-8325-2-git-send-email-ryabinin.a.a@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
* Andrey Ryabinin <ryabinin.a.a@gmail.com> wrote: > In not-instrumented code KASAN replaces instrumented > memset/memcpy/memmove with not-instrumented analogues > __memset/__memcpy/__memove. > However, on x86 EFI stub is not linked with kernel. s/with the kernel > It uses not-instrumented mem*() functions from > arch/x86/boot/compressed/string.c > So we don't replace them with __mem*() variants in EFI stub. > > In ARM64 EFI stub is linked with the kernel, so we should s/In ARM64 EFI stub/On ARM64 the EFI stub/. > replace mem*() functions with __mem*(), because EFI stub s/the EFI stub > runs before KASAN setup early shadow. s/before KASAN sets up the early shadow ? > So let's move these #undef mem* into arch's asm/efi.h which is s/lets > also included by EFI stub. s/by the EFI stub > > Signed-off-by: Andrey Ryabinin <ryabinin.a.a@gmail.com> > --- > arch/x86/include/asm/efi.h | 8 ++++++++ > drivers/firmware/efi/libstub/efistub.h | 4 ---- > 2 files changed, 8 insertions(+), 4 deletions(-) > > diff --git a/arch/x86/include/asm/efi.h b/arch/x86/include/asm/efi.h > index 155162e..d821ce2 100644 > --- a/arch/x86/include/asm/efi.h > +++ b/arch/x86/include/asm/efi.h > @@ -25,6 +25,14 @@ > #define EFI32_LOADER_SIGNATURE "EL32" > #define EFI64_LOADER_SIGNATURE "EL64" > > +/* > + * Use memcpy/memset from arch/x86/boot/compressed/string.c > + * for EFI stub. > + */ > +#undef memcpy > +#undef memset > +#undef memmove This comment should also mention why it's done, not what is done. Also: s/for EFI stub/for the EFI stub Thanks, Ingo
On Fri, Aug 28, 2015 at 08:27:45AM +0200, Ingo Molnar wrote: > > * Andrey Ryabinin <ryabinin.a.a@gmail.com> wrote: > > > In not-instrumented code KASAN replaces instrumented > > memset/memcpy/memmove with not-instrumented analogues > > __memset/__memcpy/__memove. > > However, on x86 EFI stub is not linked with kernel. > > s/with the kernel > > > It uses not-instrumented mem*() functions from > > arch/x86/boot/compressed/string.c > > So we don't replace them with __mem*() variants in EFI stub. > > > > In ARM64 EFI stub is linked with the kernel, so we should > > s/In ARM64 EFI stub/On ARM64 the EFI stub/. > > > replace mem*() functions with __mem*(), because EFI stub > > s/the EFI stub > > > runs before KASAN setup early shadow. > > s/before KASAN sets up the early shadow > > ? > > > So let's move these #undef mem* into arch's asm/efi.h which is > > s/lets No, that one is actually correct. Abbreviation of let us. > > also included by EFI stub. > > s/by the EFI stub > > > > > Signed-off-by: Andrey Ryabinin <ryabinin.a.a@gmail.com> > > --- > > arch/x86/include/asm/efi.h | 8 ++++++++ > > drivers/firmware/efi/libstub/efistub.h | 4 ---- > > 2 files changed, 8 insertions(+), 4 deletions(-) > > > > diff --git a/arch/x86/include/asm/efi.h b/arch/x86/include/asm/efi.h > > index 155162e..d821ce2 100644 > > --- a/arch/x86/include/asm/efi.h > > +++ b/arch/x86/include/asm/efi.h > > @@ -25,6 +25,14 @@ > > #define EFI32_LOADER_SIGNATURE "EL32" > > #define EFI64_LOADER_SIGNATURE "EL64" > > > > +/* > > + * Use memcpy/memset from arch/x86/boot/compressed/string.c > > + * for EFI stub. > > + */ > > +#undef memcpy > > +#undef memset > > +#undef memmove > > This comment should also mention why it's done, not what is done. > > Also: > > s/for EFI stub/for the EFI stub > > Thanks, > > Ingo > -- > To unsubscribe from this list: send the line "unsubscribe linux-efi" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html
* Leif Lindholm <leif.lindholm@linaro.org> wrote: > > > So let's move these #undef mem* into arch's asm/efi.h which is > > > > s/lets > > No, that one is actually correct. Abbreviation of let us. Indeed. Thanks, Ingo
diff --git a/arch/x86/include/asm/efi.h b/arch/x86/include/asm/efi.h index 155162e..d821ce2 100644 --- a/arch/x86/include/asm/efi.h +++ b/arch/x86/include/asm/efi.h @@ -25,6 +25,14 @@ #define EFI32_LOADER_SIGNATURE "EL32" #define EFI64_LOADER_SIGNATURE "EL64" +/* + * Use memcpy/memset from arch/x86/boot/compressed/string.c + * for EFI stub. + */ +#undef memcpy +#undef memset +#undef memmove + #ifdef CONFIG_X86_32 diff --git a/drivers/firmware/efi/libstub/efistub.h b/drivers/firmware/efi/libstub/efistub.h index e334a01..6b6548f 100644 --- a/drivers/firmware/efi/libstub/efistub.h +++ b/drivers/firmware/efi/libstub/efistub.h @@ -5,10 +5,6 @@ /* error code which can't be mistaken for valid address */ #define EFI_ERROR (~0UL) -#undef memcpy -#undef memset -#undef memmove - void efi_char16_printk(efi_system_table_t *, efi_char16_t *); efi_status_t efi_open_volume(efi_system_table_t *sys_table_arg, void *__image,
In not-instrumented code KASAN replaces instrumented memset/memcpy/memmove with not-instrumented analogues __memset/__memcpy/__memove. However, on x86 EFI stub is not linked with kernel. It uses not-instrumented mem*() functions from arch/x86/boot/compressed/string.c So we don't replace them with __mem*() variants in EFI stub. In ARM64 EFI stub is linked with the kernel, so we should replace mem*() functions with __mem*(), because EFI stub runs before KASAN setup early shadow. So let's move these #undef mem* into arch's asm/efi.h which is also included by EFI stub. Signed-off-by: Andrey Ryabinin <ryabinin.a.a@gmail.com> --- arch/x86/include/asm/efi.h | 8 ++++++++ drivers/firmware/efi/libstub/efistub.h | 4 ---- 2 files changed, 8 insertions(+), 4 deletions(-)