lkml.org 
[lkml]   [2021]   [Jul]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.13 173/800] arm64: entry: dont instrument entry code with KCOV
    Date
    From: Mark Rutland <mark.rutland@arm.com>

    [ Upstream commit bf6fa2c0dda751863c3446aa64d733013bec4a19 ]

    The code in entry-common.c runs at exception entry and return
    boundaries, where portions of the kernel environment aren't available.
    For example, RCU may not be watching, and lockdep state may be
    out-of-sync with the hardware. Due to this, it is not sound to
    instrument this code.

    We generally avoid instrumentation by marking the entry functions as
    `noinstr`, but currently this doesn't inhibit KCOV instrumentation.
    Prevent this by disabling KCOV for the entire compilation unit.

    Signed-off-by: Mark Rutland <mark.rutland@arm.com>
    Acked-by: Catalin Marinas <catalin.marinas@arm.com>
    Acked-by: Marc Zyngier <maz@kernel.org>
    Cc: James Morse <james.morse@arm.com>
    Cc: Will Deacon <will@kernel.org>
    Link: https://lore.kernel.org/r/20210607094624.34689-20-mark.rutland@arm.com
    Signed-off-by: Will Deacon <will@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    arch/arm64/kernel/Makefile | 5 +++++
    1 file changed, 5 insertions(+)

    diff --git a/arch/arm64/kernel/Makefile b/arch/arm64/kernel/Makefile
    index 6cc97730790e..787c3c83edd7 100644
    --- a/arch/arm64/kernel/Makefile
    +++ b/arch/arm64/kernel/Makefile
    @@ -14,6 +14,11 @@ CFLAGS_REMOVE_return_address.o = $(CC_FLAGS_FTRACE)
    CFLAGS_REMOVE_syscall.o = -fstack-protector -fstack-protector-strong
    CFLAGS_syscall.o += -fno-stack-protector

    +# It's not safe to invoke KCOV when portions of the kernel environment aren't
    +# available or are out-of-sync with HW state. Since `noinstr` doesn't always
    +# inhibit KCOV instrumentation, disable it for the entire compilation unit.
    +KCOV_INSTRUMENT_entry.o := n
    +
    # Object file lists.
    obj-y := debug-monitors.o entry.o irq.o fpsimd.o \
    entry-common.o entry-fpsimd.o process.o ptrace.o \
    --
    2.30.2


    \
     
     \ /
      Last update: 2021-07-12 10:41    [W:4.206 / U:0.000 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site