* Re: [PATCH v3 2/6] Disable instrumentation for some code
@ 2018-04-08 1:38 Liuwenliang (Abbott Liu)
0 siblings, 0 replies; 4+ messages in thread
From: Liuwenliang (Abbott Liu) @ 2018-04-08 1:38 UTC (permalink / raw)
To: Russell King - ARM Linux, Marc Zyngier
Cc: aryabinin, dvyukov, corbet, christoffer.dall, kstewart, gregkh,
f.fainelli, akpm, linux, mawilcox, pombredanne, ard.biesheuvel,
vladimir.murzin, alexander.levin, nicolas.pitre, tglx, thgarnie,
dhowells, keescook, arnd, geert, tixy, julien.thierry,
mark.rutland, james.morse, zhichao.huang, jinb.park7, labbott,
philip, grygorii.strashko, catalin.marinas, opendmb,
kirill.shutemov, kasan-dev, linux-doc, linux-kernel,
linux-arm-kernel, kvmarm, linux-mm
On Tue, Apr 03, 2018 at 19:39, Russell King - ARM Linux:
>On Tue, Apr 03, 2018 at 12:30:42PM +0100, Marc Zyngier wrote:
>> On 02/04/18 13:04, Abbott Liu wrote:
>> > From: Andrey Ryabinin <a.ryabinin@samsung.com>
>> >
>> > Disable instrumentation for arch/arm/boot/compressed/*
>> > ,arch/arm/kvm/hyp/* and arch/arm/vdso/* because those
>> > code won't linkd with kernel image.
>> >
>> > Disable kasan check in the function unwind_pop_register
>> > because it doesn't matter that kasan checks failed when
>> > unwind_pop_register read stack memory of task.
>> >
>> > Reviewed-by: Russell King - ARM Linux <linux@armlinux.org.uk>
>> > Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
>> > Reviewed-by: Marc Zyngier <marc.zyngier@arm.com>
>>
>> Just because I replied to this patch doesn't mean you can stick my
>> Reviewed-by tag on it. Please drop this tag until I explicitly say that
>> you can add it (see Documentation/process/submitting-patches.rst,
>> section 11).
>>
>> Same goes for patch 1.
>
>Same goes for that reviewed-by line for me. From my records, I never
>even looked at patch 2 from the first posting, and I don't appear to
>have the second posting in my mailbox (it's probably been classed as
>spam by dspam.) So these reviewed-by lines seem to be totally
>misleading.
Thank Marc Zyngier and Russell King.
I have read Documentation/process/submitting-patches.rst and understand
it now. I will change it in the next version.
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH v3 0/6] KASan for arm
@ 2018-04-02 12:04 Abbott Liu
2018-04-02 12:04 ` [PATCH v3 2/6] Disable instrumentation for some code Abbott Liu
0 siblings, 1 reply; 4+ messages in thread
From: Abbott Liu @ 2018-04-02 12:04 UTC (permalink / raw)
To: aryabinin, dvyukov, corbet, linux, christoffer.dall,
marc.zyngier, kstewart, gregkh, f.fainelli, liuwenliang, akpm,
linux, mawilcox, pombredanne, ard.biesheuvel, vladimir.murzin,
alexander.levin, nicolas.pitre, tglx, thgarnie, dhowells,
keescook, arnd, geert, tixy, julien.thierry, mark.rutland,
james.morse, zhichao.huang, jinb.park7, labbott, philip,
grygorii.strashko, catalin.marinas, opendmb, kirill.shutemov,
kasan-dev, linux-doc, linux-kernel, linux-arm-kernel, kvmarm,
linux-mm
From: Andrey Ryabinin <a.ryabinin@samsung.com>
Changelog:
v3 - v2
- Remove this patch: 2 1-byte checks more safer for memory_is_poisoned_16
because a unaligned load/store of 16 bytes is rare on arm, and this
patch is very likely to affect the performance of modern CPUs.
---Acked by: Russell King - ARM Linux <linux@armlinux.org.uk>
- Fixed some link error which kasan_pmd_populate,kasan_pte_populate and
kasan_pud_populate are in section .meminit.text but the function
kasan_alloc_block which is called by kasan_pmd_populate,
kasan_pte_populate and kasan_pud_populate is in section .init.text. So
we need change kasan_pmd_populate,kasan_pte_populate and
kasan_pud_populate into the section .init.text.
---Reported by: Florian Fainelli <f.fainelli@gmail.com>
- Fixed some compile error which caused by the wrong access instruction in
arch/arm/kernel/entry-common.S.
---Reported by: kbuild test robot <lkp@intel.com>
- Disable instrumentation for arch/arm/kvm/hyp/*.
---Acked by: Marc Zyngier <marc.zyngier@arm.com>
- Update the set of supported architectures in
Documentation/dev-tools/kasan.rst.
---Acked by:Dmitry Vyukov <dvyukov@google.com>
- The version 2 is tested by:
Florian Fainelli <f.fainelli@gmail.com> (compile test)
kbuild test robot <lkp@intel.com> (compile test)
Joel Stanley <joel@jms.id.au> (on ASPEED ast2500(ARMv5))
v2 - v1
- Fixed some compiling error which happens on changing kernel compression
mode to lzma/xz/lzo/lz4.
---Reported by: Florian Fainelli <f.fainelli@gmail.com>,
Russell King - ARM Linux <linux@armlinux.org.uk>
- Fixed a compiling error cause by some older arm instruction set(armv4t)
don't suppory movw/movt which is reported by kbuild.
- Changed the pte flag from _L_PTE_DEFAULT | L_PTE_DIRTY | L_PTE_XN to
pgprot_val(PAGE_KERNEL).
---Reported by: Russell King - ARM Linux <linux@armlinux.org.uk>
- Moved Enable KASan patch as the last one.
---Reported by: Florian Fainelli <f.fainelli@gmail.com>,
Russell King - ARM Linux <linux@armlinux.org.uk>
- Moved the definitions of cp15 registers from
arch/arm/include/asm/kvm_hyp.h to arch/arm/include/asm/cp15.h.
---Asked by: Mark Rutland <mark.rutland@arm.com>
- Merge the following commits into the commit
Define the virtual space of KASan's shadow region:
1) Define the virtual space of KASan's shadow region;
2) Avoid cleaning the KASan shadow area's mapping table;
3) Add KASan layout;
- Merge the following commits into the commit
Initialize the mapping of KASan shadow memory:
1) Initialize the mapping of KASan shadow memory;
2) Add support arm LPAE;
3) Don't need to map the shadow of KASan's shadow memory;
---Reported by: Russell King - ARM Linux <linux@armlinux.org.uk>
4) Change mapping of kasan_zero_page int readonly.
- The version 1 is tested by Florian Fainelli <f.fainelli@gmail.com>
on a Cortex-A5 (no LPAE).
Hi,all:
These patches add arch specific code for kernel address sanitizer
(see Documentation/kasan.txt).
1/8 of kernel addresses reserved for shadow memory. There was no
big enough hole for this, so virtual addresses for shadow were
stolen from user space.
At early boot stage the whole shadow region populated with just
one physical page (kasan_zero_page). Later, this page reused
as readonly zero shadow for some memory that KASan currently
don't track (vmalloc).
After mapping the physical memory, pages for shadow memory are
allocated and mapped.
KASan's stack instrumentation significantly increases stack's
consumption, so CONFIG_KASAN doubles THREAD_SIZE.
Functions like memset/memmove/memcpy do a lot of memory accesses.
If bad pointer passed to one of these function it is important
to catch this. Compiler's instrumentation cannot do this since
these functions are written in assembly.
KASan replaces memory functions with manually instrumented variants.
Original functions declared as weak symbols so strong definitions
in mm/kasan/kasan.c could replace them. Original functions have aliases
with '__' prefix in name, so we could call non-instrumented variant
if needed.
Some files built without kasan instrumentation (e.g. mm/slub.c).
Original mem* function replaced (via #define) with prefixed variants
to disable memory access checks for such files.
On arm LPAE architecture, the mapping table of KASan shadow memory(if
PAGE_OFFSET is 0xc0000000, the KASan shadow memory's virtual space is
0xb6e000000~0xbf000000) can't be filled in do_translation_fault function,
because kasan instrumentation maybe cause do_translation_fault function
accessing KASan shadow memory. The accessing of KASan shadow memory in
do_translation_fault function maybe cause dead circle. So the mapping table
of KASan shadow memory need be copyed in pgd_alloc function.
Most of the code comes from:
https://github.com/aryabinin/linux/commit/0b54f17e70ff50a902c4af05bb92716eb95acefe
These patches are tested on vexpress-ca15, vexpress-ca9
Cc: Andrey Ryabinin <a.ryabinin@samsung.com>
Tested-by: Florian Fainelli <f.fainelli@gmail.com>
Tested-by: Joel Stanley <joel@jms.id.au>
Tested-by: Abbott Liu <liuwenliang@huawei.com>
Signed-off-by: Abbott Liu <liuwenliang@huawei.com>
Abbott Liu (2):
Add TTBR operator for kasan_init
Define the virtual space of KASan's shadow region
Andrey Ryabinin (4):
Disable instrumentation for some code
Replace memory function for kasan
Initialize the mapping of KASan shadow memory
Enable KASan for arm
Documentation/dev-tools/kasan.rst | 2 +-
arch/arm/Kconfig | 1 +
arch/arm/boot/compressed/Makefile | 1 +
arch/arm/boot/compressed/decompress.c | 2 +
arch/arm/boot/compressed/libfdt_env.h | 2 +
arch/arm/include/asm/cp15.h | 104 ++++++++++++
arch/arm/include/asm/kasan.h | 35 ++++
arch/arm/include/asm/kasan_def.h | 64 +++++++
arch/arm/include/asm/kvm_hyp.h | 52 ------
arch/arm/include/asm/memory.h | 5 +
arch/arm/include/asm/pgalloc.h | 7 +-
arch/arm/include/asm/string.h | 17 ++
arch/arm/include/asm/thread_info.h | 4 +
arch/arm/kernel/entry-armv.S | 5 +-
arch/arm/kernel/entry-common.S | 9 +-
arch/arm/kernel/head-common.S | 7 +-
arch/arm/kernel/setup.c | 2 +
arch/arm/kernel/unwind.c | 3 +-
arch/arm/kvm/hyp/Makefile | 4 +
arch/arm/kvm/hyp/cp15-sr.c | 12 +-
arch/arm/kvm/hyp/switch.c | 6 +-
arch/arm/lib/memcpy.S | 3 +
arch/arm/lib/memmove.S | 5 +-
arch/arm/lib/memset.S | 3 +
arch/arm/mm/Makefile | 3 +
arch/arm/mm/init.c | 6 +
arch/arm/mm/kasan_init.c | 302 ++++++++++++++++++++++++++++++++++
arch/arm/mm/mmu.c | 7 +-
arch/arm/mm/pgd.c | 14 ++
arch/arm/vdso/Makefile | 2 +
mm/kasan/kasan.c | 5 +-
31 files changed, 618 insertions(+), 76 deletions(-)
create mode 100644 arch/arm/include/asm/kasan.h
create mode 100644 arch/arm/include/asm/kasan_def.h
create mode 100644 arch/arm/mm/kasan_init.c
--
2.9.0
^ permalink raw reply [flat|nested] 4+ messages in thread* [PATCH v3 2/6] Disable instrumentation for some code
2018-04-02 12:04 [PATCH v3 0/6] KASan for arm Abbott Liu
@ 2018-04-02 12:04 ` Abbott Liu
2018-04-03 11:30 ` Marc Zyngier
0 siblings, 1 reply; 4+ messages in thread
From: Abbott Liu @ 2018-04-02 12:04 UTC (permalink / raw)
To: aryabinin, dvyukov, corbet, linux, christoffer.dall,
marc.zyngier, kstewart, gregkh, f.fainelli, liuwenliang, akpm,
linux, mawilcox, pombredanne, ard.biesheuvel, vladimir.murzin,
alexander.levin, nicolas.pitre, tglx, thgarnie, dhowells,
keescook, arnd, geert, tixy, julien.thierry, mark.rutland,
james.morse, zhichao.huang, jinb.park7, labbott, philip,
grygorii.strashko, catalin.marinas, opendmb, kirill.shutemov,
kasan-dev, linux-doc, linux-kernel, linux-arm-kernel, kvmarm,
linux-mm
From: Andrey Ryabinin <a.ryabinin@samsung.com>
Disable instrumentation for arch/arm/boot/compressed/*
,arch/arm/kvm/hyp/* and arch/arm/vdso/* because those
code won't linkd with kernel image.
Disable kasan check in the function unwind_pop_register
because it doesn't matter that kasan checks failed when
unwind_pop_register read stack memory of task.
Reviewed-by: Russell King - ARM Linux <linux@armlinux.org.uk>
Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
Reviewed-by: Marc Zyngier <marc.zyngier@arm.com>
Tested-by: Joel Stanley <joel@jms.id.au>
Tested-by: Florian Fainelli <f.fainelli@gmail.com>
Tested-by: Abbott Liu <liuwenliang@huawei.com>
Signed-off-by: Abbott Liu <liuwenliang@huawei.com>
---
arch/arm/boot/compressed/Makefile | 1 +
arch/arm/kernel/unwind.c | 3 ++-
arch/arm/kvm/hyp/Makefile | 4 ++++
arch/arm/vdso/Makefile | 2 ++
4 files changed, 9 insertions(+), 1 deletion(-)
diff --git a/arch/arm/boot/compressed/Makefile b/arch/arm/boot/compressed/Makefile
index 45a6b9b..966103e 100644
--- a/arch/arm/boot/compressed/Makefile
+++ b/arch/arm/boot/compressed/Makefile
@@ -24,6 +24,7 @@ OBJS += hyp-stub.o
endif
GCOV_PROFILE := n
+KASAN_SANITIZE := n
#
# Architecture dependencies
diff --git a/arch/arm/kernel/unwind.c b/arch/arm/kernel/unwind.c
index 0bee233..2e55c7d 100644
--- a/arch/arm/kernel/unwind.c
+++ b/arch/arm/kernel/unwind.c
@@ -249,7 +249,8 @@ static int unwind_pop_register(struct unwind_ctrl_block *ctrl,
if (*vsp >= (unsigned long *)ctrl->sp_high)
return -URC_FAILURE;
- ctrl->vrs[reg] = *(*vsp)++;
+ ctrl->vrs[reg] = READ_ONCE_NOCHECK(*(*vsp));
+ (*vsp)++;
return URC_OK;
}
diff --git a/arch/arm/kvm/hyp/Makefile b/arch/arm/kvm/hyp/Makefile
index 63d6b40..0a8b500 100644
--- a/arch/arm/kvm/hyp/Makefile
+++ b/arch/arm/kvm/hyp/Makefile
@@ -24,3 +24,7 @@ obj-$(CONFIG_KVM_ARM_HOST) += hyp-entry.o
obj-$(CONFIG_KVM_ARM_HOST) += switch.o
CFLAGS_switch.o += $(CFLAGS_ARMV7VE)
obj-$(CONFIG_KVM_ARM_HOST) += s2-setup.o
+
+GCOV_PROFILE := n
+KASAN_SANITIZE := n
+UBSAN_SANITIZE := n
diff --git a/arch/arm/vdso/Makefile b/arch/arm/vdso/Makefile
index bb411821..87abbb7 100644
--- a/arch/arm/vdso/Makefile
+++ b/arch/arm/vdso/Makefile
@@ -30,6 +30,8 @@ CFLAGS_vgettimeofday.o = -O2
# Disable gcov profiling for VDSO code
GCOV_PROFILE := n
+KASAN_SANITIZE := n
+
# Force dependency
$(obj)/vdso.o : $(obj)/vdso.so
--
2.9.0
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH v3 2/6] Disable instrumentation for some code
2018-04-02 12:04 ` [PATCH v3 2/6] Disable instrumentation for some code Abbott Liu
@ 2018-04-03 11:30 ` Marc Zyngier
2018-04-03 11:38 ` Russell King - ARM Linux
0 siblings, 1 reply; 4+ messages in thread
From: Marc Zyngier @ 2018-04-03 11:30 UTC (permalink / raw)
To: Abbott Liu, aryabinin, dvyukov, corbet, linux, christoffer.dall,
kstewart, gregkh, f.fainelli, akpm, linux, mawilcox, pombredanne,
ard.biesheuvel, vladimir.murzin, alexander.levin, nicolas.pitre,
tglx, thgarnie, dhowells, keescook, arnd, geert, tixy,
julien.thierry, mark.rutland, james.morse, zhichao.huang,
jinb.park7, labbott, philip, grygorii.strashko, catalin.marinas,
opendmb, kirill.shutemov, kasan-dev, linux-doc, linux-kernel,
linux-arm-kernel, kvmarm, linux-mm
On 02/04/18 13:04, Abbott Liu wrote:
> From: Andrey Ryabinin <a.ryabinin@samsung.com>
>
> Disable instrumentation for arch/arm/boot/compressed/*
> ,arch/arm/kvm/hyp/* and arch/arm/vdso/* because those
> code won't linkd with kernel image.
>
> Disable kasan check in the function unwind_pop_register
> because it doesn't matter that kasan checks failed when
> unwind_pop_register read stack memory of task.
>
> Reviewed-by: Russell King - ARM Linux <linux@armlinux.org.uk>
> Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
> Reviewed-by: Marc Zyngier <marc.zyngier@arm.com>
Just because I replied to this patch doesn't mean you can stick my
Reviewed-by tag on it. Please drop this tag until I explicitly say that
you can add it (see Documentation/process/submitting-patches.rst,
section 11).
Same goes for patch 1.
Thanks,
M.
--
Jazz is not dead. It just smells funny...
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH v3 2/6] Disable instrumentation for some code
2018-04-03 11:30 ` Marc Zyngier
@ 2018-04-03 11:38 ` Russell King - ARM Linux
0 siblings, 0 replies; 4+ messages in thread
From: Russell King - ARM Linux @ 2018-04-03 11:38 UTC (permalink / raw)
To: Marc Zyngier
Cc: Abbott Liu, aryabinin, dvyukov, corbet, christoffer.dall,
kstewart, gregkh, f.fainelli, akpm, linux, mawilcox, pombredanne,
ard.biesheuvel, vladimir.murzin, alexander.levin, nicolas.pitre,
tglx, thgarnie, dhowells, keescook, arnd, geert, tixy,
julien.thierry, mark.rutland, james.morse, zhichao.huang,
jinb.park7, labbott, philip, grygorii.strashko, catalin.marinas,
opendmb, kirill.shutemov, kasan-dev, linux-doc, linux-kernel,
linux-arm-kernel, kvmarm, linux-mm
On Tue, Apr 03, 2018 at 12:30:42PM +0100, Marc Zyngier wrote:
> On 02/04/18 13:04, Abbott Liu wrote:
> > From: Andrey Ryabinin <a.ryabinin@samsung.com>
> >
> > Disable instrumentation for arch/arm/boot/compressed/*
> > ,arch/arm/kvm/hyp/* and arch/arm/vdso/* because those
> > code won't linkd with kernel image.
> >
> > Disable kasan check in the function unwind_pop_register
> > because it doesn't matter that kasan checks failed when
> > unwind_pop_register read stack memory of task.
> >
> > Reviewed-by: Russell King - ARM Linux <linux@armlinux.org.uk>
> > Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
> > Reviewed-by: Marc Zyngier <marc.zyngier@arm.com>
>
> Just because I replied to this patch doesn't mean you can stick my
> Reviewed-by tag on it. Please drop this tag until I explicitly say that
> you can add it (see Documentation/process/submitting-patches.rst,
> section 11).
>
> Same goes for patch 1.
Same goes for that reviewed-by line for me. From my records, I never
even looked at patch 2 from the first posting, and I don't appear to
have the second posting in my mailbox (it's probably been classed as
spam by dspam.) So these reviewed-by lines seem to be totally
misleading.
--
RMK's Patch system: http://www.armlinux.org.uk/developer/patches/
FTTC broadband for 0.8mile line in suburbia: sync at 8.8Mbps down 630kbps up
According to speedtest.net: 8.21Mbps down 510kbps up
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2018-04-08 1:38 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-04-08 1:38 [PATCH v3 2/6] Disable instrumentation for some code Liuwenliang (Abbott Liu)
-- strict thread matches above, loose matches on Subject: below --
2018-04-02 12:04 [PATCH v3 0/6] KASan for arm Abbott Liu
2018-04-02 12:04 ` [PATCH v3 2/6] Disable instrumentation for some code Abbott Liu
2018-04-03 11:30 ` Marc Zyngier
2018-04-03 11:38 ` Russell King - ARM Linux
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox