ARM: prevent tracing IPI_CPU_BACKTRACE
Patch series "compiler: allow all arches to enable CONFIG_OPTIMIZE_INLINING", v3. This patch (of 11): When function tracing for IPIs is enabled, we get a warning for an overflow of the ipi_types array with the IPI_CPU_BACKTRACE type as triggered by raise_nmi(): arch/arm/kernel/smp.c: In function 'raise_nmi': arch/arm/kernel/smp.c:489:2: error: array subscript is above array bounds [-Werror=array-bounds] trace_ipi_raise(target, ipi_types[ipinr]); This is a correct warning as we actually overflow the array here. This patch raise_nmi() to call __smp_cross_call() instead of smp_cross_call(), to avoid calling into ftrace. For clarification, I'm also adding a two new code comments describing how this one is special. The warning appears to have shown up after commite7273ff49a
("ARM: 8488/1: Make IPI_CPU_BACKTRACE a "non-secure" SGI"), which changed the number assignment from '15' to '8', but as far as I can tell has existed since the IPI tracepoints were first introduced. If we decide to backport this patch to stable kernels, we probably need to backporte7273ff49a
as well. [yamada.masahiro@socionext.com: rebase on v5.1-rc1] Link: http://lkml.kernel.org/r/20190423034959.13525-2-yamada.masahiro@socionext.com Fixes:e7273ff49a
("ARM: 8488/1: Make IPI_CPU_BACKTRACE a "non-secure" SGI") Fixes:365ec7b173
("ARM: add IPI tracepoints") # v3.17 Signed-off-by: Arnd Bergmann <arnd@arndb.de> Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com> Cc: Heiko Carstens <heiko.carstens@de.ibm.com> Cc: Arnd Bergmann <arnd@arndb.de> Cc: Ingo Molnar <mingo@redhat.com> Cc: Christophe Leroy <christophe.leroy@c-s.fr> Cc: Mathieu Malaterre <malat@debian.org> Cc: "H. Peter Anvin" <hpa@zytor.com> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org> Cc: Paul Mackerras <paulus@samba.org> Cc: Ralf Baechle <ralf@linux-mips.org> Cc: Stefan Agner <stefan@agner.ch> Cc: Boris Brezillon <bbrezillon@kernel.org> Cc: Miquel Raynal <miquel.raynal@bootlin.com> Cc: Richard Weinberger <richard@nod.at> Cc: David Woodhouse <dwmw2@infradead.org> Cc: Brian Norris <computersforpeace@gmail.com> Cc: Marek Vasut <marek.vasut@gmail.com> Cc: Russell King <rmk+kernel@arm.linux.org.uk> Cc: Borislav Petkov <bp@suse.de> Cc: Mark Rutland <mark.rutland@arm.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
687a3e4d8e
commit
be167862ae
|
@ -6,6 +6,7 @@
|
||||||
#include <linux/threads.h>
|
#include <linux/threads.h>
|
||||||
#include <asm/irq.h>
|
#include <asm/irq.h>
|
||||||
|
|
||||||
|
/* number of IPIS _not_ including IPI_CPU_BACKTRACE */
|
||||||
#define NR_IPI 7
|
#define NR_IPI 7
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
|
|
|
@ -70,6 +70,10 @@ enum ipi_msg_type {
|
||||||
IPI_CPU_STOP,
|
IPI_CPU_STOP,
|
||||||
IPI_IRQ_WORK,
|
IPI_IRQ_WORK,
|
||||||
IPI_COMPLETION,
|
IPI_COMPLETION,
|
||||||
|
/*
|
||||||
|
* CPU_BACKTRACE is special and not included in NR_IPI
|
||||||
|
* or tracable with trace_ipi_*
|
||||||
|
*/
|
||||||
IPI_CPU_BACKTRACE,
|
IPI_CPU_BACKTRACE,
|
||||||
/*
|
/*
|
||||||
* SGI8-15 can be reserved by secure firmware, and thus may
|
* SGI8-15 can be reserved by secure firmware, and thus may
|
||||||
|
@ -797,7 +801,7 @@ core_initcall(register_cpufreq_notifier);
|
||||||
|
|
||||||
static void raise_nmi(cpumask_t *mask)
|
static void raise_nmi(cpumask_t *mask)
|
||||||
{
|
{
|
||||||
smp_cross_call(mask, IPI_CPU_BACKTRACE);
|
__smp_cross_call(mask, IPI_CPU_BACKTRACE);
|
||||||
}
|
}
|
||||||
|
|
||||||
void arch_trigger_cpumask_backtrace(const cpumask_t *mask, bool exclude_self)
|
void arch_trigger_cpumask_backtrace(const cpumask_t *mask, bool exclude_self)
|
||||||
|
|
Loading…
Reference in New Issue