From: Sergey Senozhatsky > Sent: 11 December 2017 12:50 > print_symbol() uses extra stack space to sprintf() symbol > information and then to feed that buffer to printk() > > char buffer[KSYM_SYMBOL_LEN]; > > sprint_symbol(buffer, address); > printk(fmt, buffer); > > Replace print_symbol() with a direct printk("%pS") call. > > Signed-off-by: Sergey Senozhatsky <sergey.senozhatsky at gmail.com> > Cc: Thomas Gleixner <tglx at linutronix.de> > --- > kernel/irq/debug.h | 8 +++----- > 1 file changed, 3 insertions(+), 5 deletions(-) > > diff --git a/kernel/irq/debug.h b/kernel/irq/debug.h > index 17f05ef8f575..5766e15c1160 100644 > --- a/kernel/irq/debug.h > +++ b/kernel/irq/debug.h ... > @@ -15,13 +13,13 @@ static inline void print_irq_desc(unsigned int irq, struct irq_desc *desc) > printk("irq %d, desc: %p, depth: %d, count: %d, unhandled: %d\n", > irq, desc, desc->depth, desc->irq_count, desc->irqs_unhandled); > printk("->handle_irq(): %p, ", desc->handle_irq); > - print_symbol("%s\n", (unsigned long)desc->handle_irq); > + pr_cont("%pS\n", desc->handle_irq); Looks like you can (and should) use a single printk() instead of pr_cont. David