All of lore.kernel.org
 help / color / mirror / Atom feed
From: Al Viro <viro@ZenIV.linux.org.uk>
To: Andi Kleen <andi@firstfloor.org>
Cc: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>,
	linux-kernel@vger.kernel.org, Trond.Myklebust@netapp.com
Subject: Re: NFS lockdep lock misordering mmap_sem<->i_mutex_key with 2.6.32-git1
Date: Tue, 15 Dec 2009 22:21:34 +0000	[thread overview]
Message-ID: <20091215222134.GA27892@ZenIV.linux.org.uk> (raw)
In-Reply-To: <20091207132009.GI18989@one.firstfloor.org>

On Mon, Dec 07, 2009 at 02:20:09PM +0100, Andi Kleen wrote:
> >    nfs_readdir
> >      nfs_do_filldir
> >        filldir
> >          copy_to_user
> >            [page_fault]			[grab mmap_sem]
> > 
> >  sys_mmap				[grab mmap_sem]
> >    do_mmap_pgoff
> >      mmap_region
> >        nfs_file_mmap
> >          nfs_revalidate_mapping  
> >            nfs_invalidate_mapping	[grab i_mutex]
> > 
> > I guess recent lockdep improvement find old bug.
> 
> Thanks for the analysis.
> 
> I guess should never do copy_*_user while holding i_mutex? There might
> be lots of cases like that.

No.  mmap_sem inside i_mutex is the normal order; NFS mmap is doing the
wrong thing here.  Note that readdir() vs. NFS (file-only, thankfully ;-)
mmap() is a non-issue; NFS mmap() vs. write() is much more interesting.

Again, a lot of mm/* code expects i_mutex, then mmap_sem order.  It's not
just readdir().

  parent reply	other threads:[~2009-12-15 22:21 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-12-07 11:59 NFS lockdep lock misordering mmap_sem<->i_mutex_key with 2.6.32-git1 Andi Kleen
2009-12-07 12:19 ` KOSAKI Motohiro
2009-12-07 13:20   ` Andi Kleen
2009-12-07 17:38     ` KOSAKI Motohiro
2009-12-07 17:38       ` KOSAKI Motohiro
2009-12-15 22:21     ` Al Viro [this message]
2009-12-15 23:38       ` Andi Kleen
2009-12-15 23:54         ` Trond Myklebust
2009-12-16  0:09           ` Al Viro
2009-12-16 13:16             ` Trond Myklebust
2009-12-23 16:32               ` Andi Kleen
2009-12-16  0:53           ` Andi Kleen
2009-12-16 13:09             ` Trond Myklebust
2009-12-16 15:57               ` Andi Kleen
2009-12-16  0:06         ` KOSAKI Motohiro
2009-12-16  0:48           ` Andi Kleen

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=20091215222134.GA27892@ZenIV.linux.org.uk \
    --to=viro@zeniv.linux.org.uk \
    --cc=Trond.Myklebust@netapp.com \
    --cc=andi@firstfloor.org \
    --cc=kosaki.motohiro@jp.fujitsu.com \
    --cc=linux-kernel@vger.kernel.org \
    /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.