From: Nick Piggin <npiggin@suse.de>
To: Ingo Molnar <mingo@elte.hu>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
Subject: Re: [patch] x86: some lock annotations for user copy paths
Date: Wed, 10 Sep 2008 17:12:45 +0200 [thread overview]
Message-ID: <20080910151245.GC18644@wotan.suse.de> (raw)
In-Reply-To: <20080910123246.GA2564@elte.hu>
On Wed, Sep 10, 2008 at 02:32:46PM +0200, Ingo Molnar wrote:
>
> here's another one found on another box:
>
> [ 574.380319] =======================================================
> [ 574.380381] [ INFO: possible circular locking dependency detected ]
> [ 574.380413] 2.6.27-rc6-tip #30918
> [ 574.380440] -------------------------------------------------------
> [ 574.380472] sshd/8255 is trying to acquire lock:
> [ 574.380500] (&sb->s_type->i_mutex_key#9){--..}, at: [<ffffffff802d5aab>] do_truncate+0x59/0x83
> [ 574.380628]
> [ 574.380629] but task is already holding lock:
> [ 574.380679] (&mm->mmap_sem){----}, at: [<ffffffff80249775>] sys32_mmap2+0x64/0xa7
> [ 574.380781]
> [ 574.380781] which lock already depends on the new lock.
> [ 574.380782]
> [ 574.380857]
> [ 574.380857] the existing dependency chain (in reverse order) is:
> [ 574.380910]
> [ 574.380911] -> #1 (&mm->mmap_sem){----}:
> [ 574.381025] [<ffffffff80281979>] __lock_acquire+0x9b4/0xb3b
> [ 574.381081] [<ffffffff80282499>] lock_acquire+0x8d/0xba
> [ 574.381219] [<ffffffff802a94ff>] iov_iter_fault_in_readable+0x84/0x169
> [ 574.381359] [<ffffffff802aae18>] generic_file_buffered_write+0x119/0x5ad
> [ 574.381584] [<ffffffff802ab6cb>] __generic_file_aio_write_nolock+0x260/0x294
> [ 574.381809] [<ffffffff802ab768>] generic_file_aio_write+0x69/0xc5
> [ 574.381948] [<ffffffff802d68e2>] do_sync_write+0xeb/0x132
> [ 574.382086] [<ffffffff802d6f28>] vfs_write+0xa7/0xe1
> [ 574.382222] [<ffffffff802d701c>] sys_write+0x47/0x6d
> [ 574.382359] [<ffffffff802481b7>] cstar_dispatch+0x7/0x4b
> [ 574.382496] [<ffffffffffffffff>] 0xffffffffffffffff
> [ 574.382635]
> [ 574.382636] -> #0 (&sb->s_type->i_mutex_key#9){--..}:
> [ 574.382942] [<ffffffff8028181b>] __lock_acquire+0x856/0xb3b
> [ 574.383080] [<ffffffff80282499>] lock_acquire+0x8d/0xba
> [ 574.383218] [<ffffffff80b77600>] __mutex_lock_common+0xe4/0x333
> [ 574.383358] [<ffffffff80b778e9>] mutex_lock_nested+0x30/0x35
> [ 574.383495] [<ffffffff802d5aab>] do_truncate+0x59/0x83
> [ 574.383633] [<ffffffff802cbbf7>] shmem_file_setup+0xcf/0x106
> [ 574.383772] [<ffffffff802cbc50>] shmem_zero_setup+0x22/0x5e
> [ 574.383910] [<ffffffff802bfc92>] mmap_region+0x250/0x438
> [ 574.384031] [<ffffffff802c047f>] do_mmap_pgoff+0x2fe/0x363
> [ 574.384031] [<ffffffff8024978e>] sys32_mmap2+0x7d/0xa7
> [ 574.384031] [<ffffffff802481b7>] cstar_dispatch+0x7/0x4b
> [ 574.384031] [<ffffffffffffffff>] 0xffffffffffffffff
> [ 574.384031]
> [ 574.384031] other info that might help us debug this:
> [ 574.384031]
> [ 574.384031] 1 lock held by sshd/8255:
> [ 574.384031] #0: (&mm->mmap_sem){----}, at: [<ffffffff80249775>] sys32_mmap2+0x64/0xa7
> [ 574.384031]
> [ 574.384031] stack backtrace:
> [ 574.384031] Pid: 8255, comm: sshd Not tainted 2.6.27-rc6-tip #30918
> [ 574.384031] Call Trace:
> [ 574.384031] [<ffffffff80280fba>] print_circular_bug_tail+0x71/0x7c
> [ 574.384031] [<ffffffff8028181b>] __lock_acquire+0x856/0xb3b
> [ 574.384031] [<ffffffff80282499>] lock_acquire+0x8d/0xba
> [ 574.384031] [<ffffffff802d5aab>] ? do_truncate+0x59/0x83
> [ 574.384031] [<ffffffff80b77600>] __mutex_lock_common+0xe4/0x333
> [ 574.384031] [<ffffffff802d5aab>] ? do_truncate+0x59/0x83
> [ 574.384031] [<ffffffff802d5aab>] ? do_truncate+0x59/0x83
> [ 574.384031] [<ffffffff804e475f>] ? _raw_spin_unlock+0x8e/0x93
> [ 574.384031] [<ffffffff80b778e9>] mutex_lock_nested+0x30/0x35
> [ 574.384031] [<ffffffff802d5aab>] do_truncate+0x59/0x83
> [ 574.384031] [<ffffffff802d7c1f>] ? init_file+0x99/0xbb
> [ 574.384031] [<ffffffff802d7deb>] ? alloc_file+0x3e/0x4e
> [ 574.384031] [<ffffffff802cbbf7>] shmem_file_setup+0xcf/0x106
> [ 574.384031] [<ffffffff802cbc50>] shmem_zero_setup+0x22/0x5e
> [ 574.384031] [<ffffffff802bfc92>] mmap_region+0x250/0x438
> [ 574.384031] [<ffffffff802282aa>] ? arch_get_unmapped_area_topdown+0x192/0x294
> [ 574.384031] [<ffffffff802c047f>] do_mmap_pgoff+0x2fe/0x363
> [ 574.384031] [<ffffffff8024978e>] sys32_mmap2+0x7d/0xa7
> [ 574.384031] [<ffffffff802481b7>] cstar_dispatch+0x7/0x4b
Oh, nice one.
It had me scratching my head until I realised you must be using tiny shmem.
Patch attached (which brings closely into line with shmem)
--
Index: linux-2.6/mm/tiny-shmem.c
===================================================================
--- linux-2.6.orig/mm/tiny-shmem.c
+++ linux-2.6/mm/tiny-shmem.c
@@ -65,31 +65,25 @@ struct file *shmem_file_setup(char *name
if (!dentry)
goto put_memory;
+ error = -ENFILE;
+ file = get_empty_filp();
+ if (!file)
+ goto put_dentry;
+
error = -ENOSPC;
inode = ramfs_get_inode(root->d_sb, S_IFREG | S_IRWXUGO, 0);
if (!inode)
- goto put_dentry;
-
- d_instantiate(dentry, inode);
- error = -ENFILE;
- file = alloc_file(shm_mnt, dentry, FMODE_WRITE | FMODE_READ,
- &ramfs_file_operations);
- if (!file)
- goto put_dentry;
-
- inode->i_nlink = 0; /* It is unlinked */
-
- /* notify everyone as to the change of file size */
- error = do_truncate(dentry, size, 0, file);
- if (error < 0)
goto close_file;
+ d_instantiate(dentry, inode);
+ inode->i_size = size;
+ inode->i_nlink = 0; /* It is unlinked */
+ init_file(file, shm_mnt, dentry, FMODE_WRITE | FMODE_READ,
+ &ramfs_file_operations);
return file;
close_file:
put_filp(file);
- return ERR_PTR(error);
-
put_dentry:
dput(dentry);
put_memory:
next prev parent reply other threads:[~2008-09-10 15:12 UTC|newest]
Thread overview: 44+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-09-10 11:37 Nick Piggin
2008-09-10 11:41 ` Peter Zijlstra
2008-09-10 11:47 ` Ingo Molnar
2008-09-10 11:50 ` Ingo Molnar
2008-09-10 12:12 ` Ingo Molnar
2008-09-10 12:32 ` Ingo Molnar
2008-09-10 15:12 ` Nick Piggin [this message]
2008-09-10 14:48 ` Nick Piggin
2008-09-10 15:01 ` Peter Zijlstra
2008-09-10 15:17 ` Nick Piggin
2008-09-10 15:26 ` Nick Piggin
2008-09-11 8:27 ` Ingo Molnar
2008-09-11 10:43 ` Nick Piggin
2008-09-12 9:24 ` [PATCH] sysfs: fix deadlock Ingo Molnar
2008-09-14 22:02 ` Nick Piggin
2008-09-15 9:15 ` Peter Zijlstra
2008-09-14 7:39 ` [lockdep] possible circular locking, between &mm->mmap_sem and &dev->ev_mutex Ingo Molnar
2008-09-14 7:44 ` Andrew Morton
2008-09-14 8:06 ` [patch] mm: fix locking, inotify_read's ev_mutex vs do_page_fault's mmap_sem Ingo Molnar
2008-09-14 22:12 ` [patch] mm: tiny-shmem fix lor, mmap_sem vs i_mutex Nick Piggin
2008-09-17 20:14 ` Andrew Morton
2008-09-17 20:46 ` Matt Mackall
2008-09-18 11:12 ` Ingo Molnar
2008-09-18 19:29 ` Jeremy Fitzhardinge
2008-09-18 21:11 ` Matt Mackall
2008-09-20 2:18 ` Dave Hansen
2008-09-20 16:12 ` Hugh Dickins
2008-09-22 15:14 ` Dave Hansen
2008-09-22 14:54 ` David Howells
2008-09-23 5:32 ` Nick Piggin
2008-09-24 19:29 ` Hugh Dickins
2008-09-24 19:47 ` Andrew Morton
2008-09-24 18:18 ` David Howells
2008-09-24 18:29 ` Matt Mackall
2008-09-24 19:41 ` Hugh Dickins
2008-09-24 19:59 ` David Howells
2008-09-24 23:43 ` Hugh Dickins
2008-09-24 18:56 ` David Howells
2008-09-24 19:11 ` Matt Mackall
2008-09-24 19:26 ` David Howells
2008-09-19 8:40 ` Ingo Molnar
2008-09-14 21:36 ` [lockdep] possible circular locking, between &mm->mmap_sem and &dev->ev_mutex Nick Piggin
2008-09-10 14:30 ` [patch] x86: some lock annotations for user copy paths Nick Piggin
2008-09-10 14:31 ` 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=20080910151245.GC18644@wotan.suse.de \
--to=npiggin@suse.de \
--cc=a.p.zijlstra@chello.nl \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Powered by JetHome