All of lore.kernel.org
 help / color / mirror / Atom feed
From: Minchan Kim <minchan@kernel.org>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: linux-mm@kvack.org, Sagi Grimberg <sagig@mellanox.com>,
	Haggai Eran <haggaie@mellanox.com>
Subject: Re: [PATCH] mm: Fix compile warning of mmotm-2012-09-06-16-46
Date: Mon, 10 Sep 2012 10:14:07 +0900	[thread overview]
Message-ID: <20120910011407.GA7500@bbox> (raw)
In-Reply-To: <20120907130605.be86f2a9.akpm@linux-foundation.org>

Hi Andrew,

On Fri, Sep 07, 2012 at 01:06:05PM -0700, Andrew Morton wrote:
> On Fri,  7 Sep 2012 09:57:10 +0900
> Minchan Kim <minchan@kernel.org> wrote:
> 
> > When I compiled today, I met following warning.
> > Correct it.
> > 
> > mm/memory.c: In function ___copy_page_range___:
> > include/linux/mmu_notifier.h:235:38: warning: ___mmun_end___ may be used uninitialized in this function [-Wuninitialized]
> > mm/memory.c:1043:16: note: ___mmun_end___ was declared here
> > include/linux/mmu_notifier.h:235:38: warning: ___mmun_start___ may be used uninitialized in this function [-Wuninitialized]
> > mm/memory.c:1042:16: note: ___mmun_start___ was declared here
> >   LD      mm/built-in.o
> > 
> > Cc: Sagi Grimberg <sagig@mellanox.com>
> > Cc: Haggai Eran <haggaie@mellanox.com>
> > Signed-off-by: Minchan Kim <minchan@kernel.org>
> > ---
> >  mm/memory.c |    4 ++--
> >  1 file changed, 2 insertions(+), 2 deletions(-)
> > 
> > diff --git a/mm/memory.c b/mm/memory.c
> > index 10e9b38..d000449 100644
> > --- a/mm/memory.c
> > +++ b/mm/memory.c
> > @@ -1039,8 +1039,8 @@ int copy_page_range(struct mm_struct *dst_mm, struct mm_struct *src_mm,
> >  	unsigned long next;
> >  	unsigned long addr = vma->vm_start;
> >  	unsigned long end = vma->vm_end;
> > -	unsigned long mmun_start;	/* For mmu_notifiers */
> > -	unsigned long mmun_end;		/* For mmu_notifiers */
> > +	unsigned long uninitialized_var(mmun_start);	/* For mmu_notifiers */
> > +	unsigned long uninitialized_var(mmun_end);	/* For mmu_notifiers */
> >  	int ret;
> >  
> 
> Well yes, but a) uninitialized_var is a bit ugly and has some potential
> to hide real bugs and b) it's not completely obvious that
> is_cow_mapping() is stable across those two calls.
> 
> I think a better approach is this:
> 
> --- a/mm/memory.c~mm-move-all-mmu-notifier-invocations-to-be-done-outside-the-pt-lock-fix-fix
> +++ a/mm/memory.c
> @@ -1041,6 +1041,7 @@ int copy_page_range(struct mm_struct *ds
>  	unsigned long end = vma->vm_end;
>  	unsigned long mmun_start;	/* For mmu_notifiers */
>  	unsigned long mmun_end;		/* For mmu_notifiers */
> +	bool is_cow;
>  	int ret;
>  
>  	/*
> @@ -1074,7 +1075,8 @@ int copy_page_range(struct mm_struct *ds
>  	 * parent mm. And a permission downgrade will only happen if
>  	 * is_cow_mapping() returns true.
>  	 */
> -	if (is_cow_mapping(vma->vm_flags)) {
> +	is_cow = is_cow_mapping(vma->vm_flags);
> +	if (is_cow) {
>  		mmun_start = addr;
>  		mmun_end   = end;
>  		mmu_notifier_invalidate_range_start(src_mm, mmun_start,
> @@ -1095,7 +1097,7 @@ int copy_page_range(struct mm_struct *ds
>  		}
>  	} while (dst_pgd++, src_pgd++, addr = next, addr != end);
>  
> -	if (is_cow_mapping(vma->vm_flags))
> +	if (is_cow)
>  		mmu_notifier_invalidate_range_end(src_mm, mmun_start, mmun_end);
>  	return ret;
>  }
> 
> Unfortunately, my (old) versions of gcc are so stupid that they *still*
> generate the warning even when the code is as obviously correct as this :(
> 
> Can you please test it with your compiler?

My compiler is stupidl, too. It still emit the samw warning when I apply
your patch. In addition, I can't see any benefit of text size.

barrios@bbox:~/linux-mmotm$ size mm/memory.o mm/memory.o.andrew 
   text    data     bss     dec     hex filename
  29147      54      40   29241    7239 mm/memory.o
  29147      54      40   29241    7239 mm/memory.o.andrew


-- 
Kind regards,
Minchan Kim

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

  parent reply	other threads:[~2012-09-10  1:12 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-09-07  0:57 [PATCH] mm: Fix compile warning of mmotm-2012-09-06-16-46 Minchan Kim
2012-09-07 20:06 ` Andrew Morton
2012-09-09  6:57   ` Haggai Eran
2012-09-10 11:40     ` [PATCH] mm: Fix compiler warning in copy_page_range Haggai Eran
2012-09-11  6:21       ` Minchan Kim
2012-09-10  1:14   ` Minchan Kim [this message]
2012-09-10  1:15     ` [PATCH] mm: Fix compile warning of mmotm-2012-09-06-16-46 Minchan Kim

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20120910011407.GA7500@bbox \
    --to=minchan@kernel.org \
    --cc=akpm@linux-foundation.org \
    --cc=haggaie@mellanox.com \
    --cc=linux-mm@kvack.org \
    --cc=sagig@mellanox.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.