Messages in this thread | | | Date | Mon, 22 Aug 2011 09:33:34 -0400 | Subject | Re: INFO: possible circular locking dependency detected 3.1.0-rc2-00190-g3210d19 | From | Josh Boyer <> |
| |
On Mon, Aug 22, 2011 at 9:27 AM, Al Viro <viro@zeniv.linux.org.uk> wrote: > On Mon, Aug 22, 2011 at 02:16:21PM +0100, Al Viro wrote: >> On Mon, Aug 22, 2011 at 09:09:14AM -0400, Josh Boyer wrote: >> >> > We've had a report of this on 3.0.1 as well. Slightly different >> > scenario and fs, but the locks in question are the same. >> > https://bugzilla.redhat.com/show_bug.cgi?id=730998 >> > >> > It seems that with CONFIG_PROVE_LOCKING on, might_fault will always >> > attempt to grab mm->mmap_sem. The common flow here is that getdents >> > calls filldir, which calls copy_to_user, which is what is calling >> > might_fault. >> > >> > Beyond that, I'm a bit over my head at the moment because I don't know >> > if the VFS is right and we just need some more lockdep annotations or >> > if there really is a problem. >> >> Don't grab ->i_mutex in ->evict_inode(). Why are you doing that, anyway? > > Note, BTW, that readdir() is a red herring here; there is a much more > relevant reason for that ranking. Namely, write() doing copy_from_user() > when the file we are writing into has i_mutex held by us. That can fault > and in this case we have a non-directory inode. While you can't have > directory mmapped, regular files can be mmapped just fine.
So the lockdep report in the RHBZ (which now that I look at it probably isn't the same as this report) seems to be doing a readdir while find is trying to mmap, which is calling into hugetlbfs_file_mmap and throwing the same deadlock warning. Is that like the scenario you are describing above?
josh -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |