Subject: Re: [PATCH] mm, debug: mm-introduce-vm_bug_on_mm-fix-fix.patch

From: Michal Hocko <[email-masked]>
Date: Wed, 24 Sep 2014 09:09:39 +0200

On Tue 23-09-14 13:52:58, Andrew Morton wrote:
> On Tue, 23 Sep 2014 12:19:49 -0400 [email-masked] wrote:
> 
> > On Tue, 23 Sep 2014 13:28:48 +0200, Michal Hocko said:
> > > And there is another one hitting during randconfig. The patch makes my
> > > eyes bleed
> > 
> > Amen.  But I'm not seeing a better fix either.
> > 
> > >  #if defined(CONFIG_NUMA_BALANCING) || defined(CONFIG_COMPACTION)
> > > -		"tlb_flush_pending %d\n",
> > > +		"tlb_flush_pending %d\n"
> > >  #endif
> > > -		mm, mm->mmap, mm->vmacache_seqnum, mm->task_size,
> > > +		, mm, mm->mmap, mm->vmacache_seqnum, mm->task_size,
> > 
> > I'm surprised that checkpatch doesn't explode on this.  And I'm starting
> > a pool on how soon somebody submits a patch to "fix" this. :)
> 
> It is all pretty godawful.  We can eliminate the tricks with the comma
> separators by adding an always-there, does-nothing argument:

yes, this is safer if we have more conditional fields in mm_struct later
on. It is also less awful. Thanks!

> 
> --- a/mm/debug.c~mm-debug-mm-introduce-vm_bug_on_mm-fix-fixpatch-fix
> +++ a/mm/debug.c
> @@ -197,7 +197,9 @@ void dump_mm(const struct mm_struct *mm)
>  #if defined(CONFIG_NUMA_BALANCING) || defined(CONFIG_COMPACTION)
>  		"tlb_flush_pending %d\n"
>  #endif
> -		, mm, mm->mmap, mm->vmacache_seqnum, mm->task_size,
> +		"%s",	/* This is here to hold the comma */
> +
> +		mm, mm->mmap, mm->vmacache_seqnum, mm->task_size,
>  #ifdef CONFIG_MMU
>  		mm->get_unmapped_area,
>  #endif
> @@ -218,16 +220,17 @@ void dump_mm(const struct mm_struct *mm)
>  #ifdef CONFIG_MEMCG
>  		mm->owner,
>  #endif
> -		mm->exe_file
> +		mm->exe_file,
>  #ifdef CONFIG_MMU_NOTIFIER
> -		, mm->mmu_notifier_mm
> +		mm->mmu_notifier_mm,
>  #endif
>  #ifdef CONFIG_NUMA_BALANCING
> -		, mm->numa_next_scan, mm->numa_scan_offset, mm->numa_scan_seq
> +		mm->numa_next_scan, mm->numa_scan_offset, mm->numa_scan_seq,
>  #endif
>  #if defined(CONFIG_NUMA_BALANCING) || defined(CONFIG_COMPACTION)
> -		, mm->tlb_flush_pending
> +		mm->tlb_flush_pending,
>  #endif
> +		""		/* This is here to not have a comma! */
>  		);
>  
>  		dump_flags(mm->def_flags, vmaflags_names,
> _
> 

-- 
Michal Hocko
SUSE Labs