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:15:09 +0900 [thread overview]
Message-ID: <20120910011509.GB7500@bbox> (raw)
In-Reply-To: <20120910011407.GA7500@bbox>
On Mon, Sep 10, 2012 at 10:14:07AM +0900, Minchan Kim wrote:
> 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$ gcc --version
gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3
--
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>
prev parent reply other threads:[~2012-09-10 1:13 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 ` [PATCH] mm: Fix compile warning of mmotm-2012-09-06-16-46 Minchan Kim
2012-09-10 1:15 ` Minchan Kim [this message]
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=20120910011509.GB7500@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.