[PATCH v3 19/20] arm64: entry: don't instrument entry code with KCOV

Mark Rutland mark.rutland at arm.com
Fri Jun 4 10:49:50 PDT 2021


On Fri, Jun 04, 2021 at 06:16:28PM +0100, Will Deacon wrote:
> On Tue, May 25, 2021 at 07:33:01PM +0100, Mark Rutland wrote:
> > 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 at arm.com>
> > Cc: Catalin Marinas <catalin.marinas at arm.com>
> > Cc: James Morse <james.morse at arm.com>
> > Cc: Marc Zyngier <maz at kernel.org>
> > Cc: Will Deacon <will at kernel.org>
> > ---
> >  arch/arm64/kernel/Makefile | 2 ++
> >  1 file changed, 2 insertions(+)
> > 
> > diff --git a/arch/arm64/kernel/Makefile b/arch/arm64/kernel/Makefile
> > index 6cc97730790e..294063032428 100644
> > --- a/arch/arm64/kernel/Makefile
> > +++ b/arch/arm64/kernel/Makefile
> > @@ -14,6 +14,8 @@ CFLAGS_REMOVE_return_address.o = $(CC_FLAGS_FTRACE)
> >  CFLAGS_REMOVE_syscall.o	 = -fstack-protector -fstack-protector-strong
> >  CFLAGS_syscall.o	+= -fno-stack-protector
> 
> Can you stick a comment here please? Just summarising what you have in the
> commit message would be handy.

Sure; I've added:

# 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.

... since that will also cover the idle.o case in the next patch.

Thanks,
Mark.



More information about the linux-arm-kernel mailing list