From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: linux-kernel@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
stable@vger.kernel.org, Jianpeng Ma <majianpeng@gmail.com>,
Sage Weil <sage@inktank.com>
Subject: [ 02/19] ceph: fix sleeping function called from invalid context.
Date: Thu, 11 Jul 2013 15:01:19 -0700 [thread overview]
Message-ID: <20130711214830.924767898@linuxfoundation.org> (raw)
In-Reply-To: <20130711214830.611455274@linuxfoundation.org>
3.10-stable review patch. If anyone has any objections, please let me know.
------------------
From: majianpeng <majianpeng@gmail.com>
commit a1dc1937337a93e699eaa56968b7de6e1a9e77cf upstream.
[ 1121.231883] BUG: sleeping function called from invalid context at kernel/rwsem.c:20
[ 1121.231935] in_atomic(): 1, irqs_disabled(): 0, pid: 9831, name: mv
[ 1121.231971] 1 lock held by mv/9831:
[ 1121.231973] #0: (&(&ci->i_ceph_lock)->rlock){+.+...},at:[<ffffffffa02bbd38>] ceph_getxattr+0x58/0x1d0 [ceph]
[ 1121.231998] CPU: 3 PID: 9831 Comm: mv Not tainted 3.10.0-rc6+ #215
[ 1121.232000] Hardware name: To Be Filled By O.E.M. To Be Filled By
O.E.M./To be filled by O.E.M., BIOS 080015 11/09/2011
[ 1121.232027] ffff88006d355a80 ffff880092f69ce0 ffffffff8168348c ffff880092f69cf8
[ 1121.232045] ffffffff81070435 ffff88006d355a20 ffff880092f69d20 ffffffff816899ba
[ 1121.232052] 0000000300000004 ffff8800b76911d0 ffff88006d355a20 ffff880092f69d68
[ 1121.232056] Call Trace:
[ 1121.232062] [<ffffffff8168348c>] dump_stack+0x19/0x1b
[ 1121.232067] [<ffffffff81070435>] __might_sleep+0xe5/0x110
[ 1121.232071] [<ffffffff816899ba>] down_read+0x2a/0x98
[ 1121.232080] [<ffffffffa02baf70>] ceph_vxattrcb_layout+0x60/0xf0 [ceph]
[ 1121.232088] [<ffffffffa02bbd7f>] ceph_getxattr+0x9f/0x1d0 [ceph]
[ 1121.232093] [<ffffffff81188d28>] vfs_getxattr+0xa8/0xd0
[ 1121.232097] [<ffffffff8118900b>] getxattr+0xab/0x1c0
[ 1121.232100] [<ffffffff811704f2>] ? final_putname+0x22/0x50
[ 1121.232104] [<ffffffff81155f80>] ? kmem_cache_free+0xb0/0x260
[ 1121.232107] [<ffffffff811704f2>] ? final_putname+0x22/0x50
[ 1121.232110] [<ffffffff8109e63d>] ? trace_hardirqs_on+0xd/0x10
[ 1121.232114] [<ffffffff816957a7>] ? sysret_check+0x1b/0x56
[ 1121.232120] [<ffffffff81189c9c>] SyS_fgetxattr+0x6c/0xc0
[ 1121.232125] [<ffffffff81695782>] system_call_fastpath+0x16/0x1b
[ 1121.232129] BUG: scheduling while atomic: mv/9831/0x10000002
[ 1121.232154] 1 lock held by mv/9831:
[ 1121.232156] #0: (&(&ci->i_ceph_lock)->rlock){+.+...}, at:
[<ffffffffa02bbd38>] ceph_getxattr+0x58/0x1d0 [ceph]
I think move the ci->i_ceph_lock down is safe because we can't free
ceph_inode_info at there.
Signed-off-by: Jianpeng Ma <majianpeng@gmail.com>
Reviewed-by: Sage Weil <sage@inktank.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
fs/ceph/xattr.c | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
--- a/fs/ceph/xattr.c
+++ b/fs/ceph/xattr.c
@@ -675,17 +675,18 @@ ssize_t ceph_getxattr(struct dentry *den
if (!ceph_is_valid_xattr(name))
return -ENODATA;
- spin_lock(&ci->i_ceph_lock);
- dout("getxattr %p ver=%lld index_ver=%lld\n", inode,
- ci->i_xattrs.version, ci->i_xattrs.index_version);
/* let's see if a virtual xattr was requested */
vxattr = ceph_match_vxattr(inode, name);
if (vxattr && !(vxattr->exists_cb && !vxattr->exists_cb(ci))) {
err = vxattr->getxattr_cb(ci, value, size);
- goto out;
+ return err;
}
+ spin_lock(&ci->i_ceph_lock);
+ dout("getxattr %p ver=%lld index_ver=%lld\n", inode,
+ ci->i_xattrs.version, ci->i_xattrs.index_version);
+
if (__ceph_caps_issued_mask(ci, CEPH_CAP_XATTR_SHARED, 1) &&
(ci->i_xattrs.index_version >= ci->i_xattrs.version)) {
goto get_xattr;
next prev parent reply other threads:[~2013-07-11 22:06 UTC|newest]
Thread overview: 125+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-07-11 22:01 [ 00/19] 3.10.1-stable review Greg Kroah-Hartman
2013-07-11 22:01 ` [ 01/19] libceph: Fix NULL pointer dereference in auth client code Greg Kroah-Hartman
2013-07-11 22:01 ` Greg Kroah-Hartman [this message]
2013-07-11 22:01 ` [ 03/19] libceph: fix invalid unsigned->signed conversion for timespec encoding Greg Kroah-Hartman
2013-07-11 22:01 ` [ 04/19] drivers/cdrom/cdrom.c: use kzalloc() for failing hardware Greg Kroah-Hartman
2013-07-11 22:01 ` [ 05/19] module: do percpu allocation after uniqueness check. No, really! Greg Kroah-Hartman
2013-07-11 22:01 ` [ 06/19] charger-manager: Ensure event is not used as format string Greg Kroah-Hartman
2013-07-11 22:01 ` [ 07/19] hpfs: better test for errors Greg Kroah-Hartman
2013-07-11 22:01 ` [ 08/19] block: do not pass disk names as format strings Greg Kroah-Hartman
2013-07-11 22:01 ` [ 09/19] crypto: sanitize argument for format string Greg Kroah-Hartman
2013-07-11 22:01 ` [ 10/19] MAINTAINERS: add stable_kernel_rules.txt to stable maintainer information Greg Kroah-Hartman
2013-07-11 22:01 ` [ 11/19] futex: Take hugepages into account when generating futex_key Greg Kroah-Hartman
2013-07-11 22:01 ` [ 12/19] tty: Reset itty for other pty Greg Kroah-Hartman
2013-07-11 22:01 ` [ 13/19] Revert "serial: 8250_pci: add support for another kind of NetMos Technology PCI 9835 Multi-I/O Controller" Greg Kroah-Hartman
2013-07-11 22:01 ` [ 14/19] NFSv4.1 end back channel session draining Greg Kroah-Hartman
2013-07-11 22:01 ` [ 15/19] nfsd4: fix decoding of compounds across page boundaries Greg Kroah-Hartman
2013-07-11 22:01 ` [ 16/19] KVM: VMX: mark unusable segment as nonpresent Greg Kroah-Hartman
2013-07-11 22:01 ` [ 17/19] SCSI: sd: Fix parsing of temporary cache mode prefix Greg Kroah-Hartman
2013-07-11 22:01 ` [ 18/19] cpufreq: Fix cpufreq regression after suspend/resume Greg Kroah-Hartman
2013-07-11 22:01 ` [ 19/19] Revert "memcg: avoid dangling reference count in creation failure" Greg Kroah-Hartman
2013-07-11 22:14 ` [ 00/19] 3.10.1-stable review Josh Boyer
2013-07-14 22:54 ` Benjamin Herrenschmidt
2013-07-11 22:29 ` Dave Jones
2013-07-11 22:44 ` Greg Kroah-Hartman
2013-07-12 1:51 ` Steven Rostedt
2013-07-12 14:15 ` Guenter Roeck
2013-07-12 15:22 ` Linus Torvalds
2013-07-12 15:47 ` Steven Rostedt
2013-07-12 15:55 ` Linus Torvalds
2013-07-12 16:17 ` Ingo Molnar
2013-07-12 16:35 ` Josh Boyer
2013-07-12 16:36 ` Josh Boyer
2013-07-12 17:05 ` Greg Kroah-Hartman
2013-07-14 22:40 ` Benjamin Herrenschmidt
2013-07-12 16:48 ` Steven Rostedt
2013-07-12 17:31 ` Guenter Roeck
2013-07-12 17:50 ` Linus Torvalds
2013-07-12 18:11 ` Guenter Roeck
2013-07-12 19:35 ` Theodore Ts'o
2013-07-12 19:49 ` Steven Rostedt
2013-07-12 19:55 ` Willy Tarreau
2013-07-12 20:19 ` Dave Jones
2013-07-12 20:28 ` Steven Rostedt
2013-07-12 20:31 ` Steven Rostedt
2013-07-12 21:19 ` Justin M. Forbes
2013-07-13 0:47 ` Jochen Striepe
2013-07-13 11:11 ` Steven Rostedt
2013-07-13 15:10 ` Dave Jones
2013-07-13 15:54 ` Steven Rostedt
2013-07-12 19:50 ` Willy Tarreau
2013-07-12 20:47 ` Theodore Ts'o
2013-07-12 21:02 ` Guenter Roeck
2013-07-13 6:22 ` Greg Kroah-Hartman
2013-07-13 6:36 ` Willy Tarreau
2013-07-13 6:48 ` Greg Kroah-Hartman
2013-07-13 7:12 ` Willy Tarreau
2013-07-15 4:12 ` Li Zefan
2013-07-15 4:43 ` Willy Tarreau
2013-07-13 11:42 ` Theodore Ts'o
2013-07-13 18:27 ` Greg Kroah-Hartman
2013-07-14 2:22 ` Theodore Ts'o
2013-07-14 3:51 ` Greg Kroah-Hartman
2013-07-14 5:24 ` Guenter Roeck
2013-07-14 20:31 ` Geert Uytterhoeven
2013-07-13 6:43 ` Guenter Roeck
2013-07-13 6:58 ` Greg Kroah-Hartman
2013-07-14 23:52 ` Benjamin Herrenschmidt
2013-07-15 1:40 ` Linus Torvalds
2013-07-15 2:08 ` Benjamin Herrenschmidt
2013-07-14 22:58 ` Benjamin Herrenschmidt
2013-07-12 0:50 ` When to push bug fixes to mainline Theodore Ts'o
2013-07-12 1:20 ` [Ksummit-2013-discuss] " Nicholas A. Bellinger
2013-07-12 1:54 ` Steven Rostedt
2013-07-12 9:46 ` Jiri Kosina
2013-07-12 11:19 ` Josh Boyer
2013-07-12 2:57 ` John W. Linville
2013-07-12 3:34 ` Greg Kroah-Hartman
2013-07-12 7:32 ` James Bottomley
2013-07-12 17:20 ` H. Peter Anvin
2013-07-12 17:28 ` Greg Kroah-Hartman
2013-07-12 17:50 ` Steven Rostedt
2013-07-12 17:59 ` Linus Torvalds
2013-07-12 18:14 ` Steven Rostedt
2013-07-13 17:52 ` Geert Uytterhoeven
2013-07-12 17:57 ` Theodore Ts'o
2013-07-12 18:13 ` Guenter Roeck
2013-07-12 18:16 ` H. Peter Anvin
2013-07-12 18:28 ` H. Peter Anvin
2013-07-12 19:44 ` Linus Torvalds
2013-07-12 19:53 ` Steven Rostedt
2013-07-12 20:09 ` Shuah Khan
2013-07-12 20:33 ` Greg Kroah-Hartman
2013-07-12 20:46 ` Steven Rostedt
2013-07-12 22:19 ` H. Peter Anvin
2013-07-12 22:17 ` H. Peter Anvin
2013-07-13 6:44 ` Ingo Molnar
2013-07-13 0:24 ` Rafael J. Wysocki
2013-07-13 1:32 ` Greg Kroah-Hartman
2013-07-13 12:16 ` Rafael J. Wysocki
2013-07-12 3:25 ` Li Zefan
2013-07-15 4:22 ` Rob Landley
2013-07-12 5:14 ` Willy Tarreau
2013-07-16 7:19 ` David Lang
2013-07-16 16:40 ` [Ksummit-2013-discuss] " Takashi Iwai
2013-07-16 16:42 ` David Lang
2013-07-16 19:29 ` Takashi Iwai
2013-07-16 16:59 ` Mark Brown
2013-07-16 17:58 ` Luck, Tony
2013-07-16 18:29 ` Linus Torvalds
2013-07-16 18:41 ` Steven Rostedt
2013-07-16 19:11 ` Greg Kroah-Hartman
2013-07-16 19:43 ` Steven Rostedt
2013-07-16 20:10 ` Willy Tarreau
2013-07-17 2:58 ` Ben Hutchings
2013-07-17 9:43 ` Li Zefan
2013-07-16 18:48 ` Willy Tarreau
2013-07-19 10:13 ` Ingo Molnar
2013-07-16 18:39 ` Willy Tarreau
2013-07-16 18:40 ` H. Peter Anvin
2013-07-16 20:29 ` David Lang
2013-07-12 17:11 ` H. Peter Anvin
2013-07-12 17:20 ` [ 00/19] 3.10.1-stable review Shuah Khan
2013-07-12 17:29 ` Greg Kroah-Hartman
2013-07-13 4:14 ` Satoru Takeuchi
2013-07-14 23:06 ` Benjamin Herrenschmidt
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=20130711214830.924767898@linuxfoundation.org \
--to=gregkh@linuxfoundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=majianpeng@gmail.com \
--cc=sage@inktank.com \
--cc=stable@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).