linux/fs/ceph
Yan, Zheng 315f240880 ceph: fix security xattr deadlock
When security is enabled, security module can call filesystem's
getxattr/setxattr callbacks during d_instantiate(). For cephfs,
d_instantiate() is usually called by MDS' dispatch thread, while
handling MDS reply. If the MDS reply does not include xattrs and
corresponding caps, getxattr/setxattr need to send a new request
to MDS and waits for the reply. This makes MDS' dispatch sleep,
nobody handles later MDS replies.

The fix is make sure lookup/atomic_open reply include xattrs and
corresponding caps. So getxattr can be handled by cached xattrs.
This requires some modification to both MDS and request message.
(Client tells MDS what caps it wants; MDS encodes proper caps in
the reply)

Smack security module may call setxattr during d_instantiate().
Unlike getxattr, we can't force MDS to issue CEPH_CAP_XATTR_EXCL
to us. So just make setxattr return error when called by MDS'
dispatch thread.

Signed-off-by: Yan, Zheng <zyan@redhat.com>
2016-03-25 18:51:55 +01:00
..
acl.c posix acls: Remove duplicate xattr name definitions 2015-12-06 21:25:17 -05:00
addr.c ceph: remove unnecessary NULL check 2016-03-25 18:51:54 +01:00
cache.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client 2016-01-24 12:34:13 -08:00
cache.h ceph: fscache: add an interface to synchronize object store limit 2014-04-03 10:33:53 +08:00
caps.c ceph: encode ctime in cap message 2016-03-25 18:51:40 +01:00
ceph_frag.c ceph: factor out libceph from Ceph file system 2010-10-20 15:37:28 -07:00
debugfs.c VFS: normal filesystems (and lustre): d_inode() annotations 2015-04-15 15:06:57 -04:00
dir.c ceph: fix security xattr deadlock 2016-03-25 18:51:55 +01:00
export.c ceph: fix security xattr deadlock 2016-03-25 18:51:55 +01:00
file.c ceph: fix security xattr deadlock 2016-03-25 18:51:55 +01:00
inode.c ceph: fix security xattr deadlock 2016-03-25 18:51:55 +01:00
ioctl.c ceph: fix divide-by-zero in __validate_layout() 2014-10-14 12:57:05 -07:00
ioctl.h ceph: fully initialize new layout 2012-05-16 14:28:27 -05:00
Kconfig ceph: add acl for cephfs 2013-12-31 20:32:01 +02:00
locks.c Move locks API users to locks_lock_inode_wait() 2015-10-22 14:57:36 -04:00
Makefile ceph: add acl for cephfs 2013-12-31 20:32:01 +02:00
mds_client.c ceph: fix security xattr deadlock 2016-03-25 18:51:55 +01:00
mds_client.h ceph: initial CEPH_FEATURE_FS_FILE_LAYOUT_V2 support 2016-03-04 21:00:37 +01:00
mdsmap.c fs/ceph: replace pr_warning by pr_warn 2014-06-06 16:08:06 -07:00
snap.c ceph: kill ceph_empty_snapc 2016-03-25 18:51:52 +01:00
strings.c ceph: rename snapshot support 2015-04-22 18:33:41 +03:00
super.c ceph: fix mounting same fs multiple times 2016-03-25 18:51:54 +01:00
super.h ceph: fix security xattr deadlock 2016-03-25 18:51:55 +01:00
xattr.c ceph: fix security xattr deadlock 2016-03-25 18:51:55 +01:00