On Fri 2018-11-02 22:31:56, Tetsuo Handa wrote: > syzbot is sometimes getting mixed output like below due to concurrent > printk(). Mitigate such output by using line-buffered printk() API. > > Node 0 DMA: 1*4kB (U) 0*8kB 0*16kB 1*32kB > syz-executor0: page allocation failure: order:0, mode:0x484020(GFP_ATOMIC|__GFP_COMP), nodemask=(null) > (U) > syz-executor0 cpuset= > 2*64kB > syz0 > (U) > mems_allowed=0 > 1*128kB > CPU: 0 PID: 7592 Comm: syz-executor0 Not tainted 4.19.0-rc6+ #118 > (U) > Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011 > 1*256kB (U) > Call Trace: > 0*512kB > <IRQ> > 1*1024kB > __dump_stack lib/dump_stack.c:77 [inline] > dump_stack+0x1c4/0x2b4 lib/dump_stack.c:113 > (U) > 1*2048kB > warn_alloc.cold.119+0xb7/0x1bd mm/page_alloc.c:3426 > (M) > > Signed-off-by: Tetsuo Handa <penguin-kernel@xxxxxxxxxxxxxxxxxxx> > Cc: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> > --- > mm/page_alloc.c | 32 +++++++++++++++++--------------- > 1 file changed, 17 insertions(+), 15 deletions(-) > > diff --git a/mm/page_alloc.c b/mm/page_alloc.c > index a919ba5..4411d5a 100644 > --- a/mm/page_alloc.c > +++ b/mm/page_alloc.c > @@ -4694,10 +4694,10 @@ unsigned long nr_free_pagecache_pages(void) > return nr_free_zone_pages(gfp_zone(GFP_HIGHUSER_MOVABLE)); > } > > -static inline void show_node(struct zone *zone) > +static inline void show_node(struct zone *zone, struct printk_buffer *buf) > { > if (IS_ENABLED(CONFIG_NUMA)) > - printk("Node %d ", zone_to_nid(zone)); > + printk_buffered(buf, "Node %d ", zone_to_nid(zone)); The conversion looks fine to me. I just think about renaming printk_buffered to bprintk(). Best Regards, Petr