summaryrefslogtreecommitdiffstats
path: root/fs/gfs2
diff options
context:
space:
mode:
authorSteven Whitehouse <swhiteho@redhat.com>2013-08-16 22:10:28 +0200
committerSteven Whitehouse <swhiteho@redhat.com>2013-08-19 10:33:57 +0200
commit7bd9ee58a4fe026514266757e812cb89c3c945eb (patch)
tree88c4560fa6bd0fdbb50a0313462fd01e209a3182 /fs/gfs2
parentGFS2: alloc_workqueue() doesn't return an ERR_PTR (diff)
downloadlinux-7bd9ee58a4fe026514266757e812cb89c3c945eb.tar.xz
linux-7bd9ee58a4fe026514266757e812cb89c3c945eb.zip
GFS2: Check for glock already held in gfs2_getxattr
Since the introduction of atomic_open, gfs2_getxattr can be called with the glock already held, so we need to allow for this. Signed-off-by: Steven Whitehouse <swhiteho@redhat.com> Reported-by: David Teigland <teigland@redhat.com> Tested-by: David Teigland <teigland@redhat.com>
Diffstat (limited to 'fs/gfs2')
-rw-r--r--fs/gfs2/inode.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/fs/gfs2/inode.c b/fs/gfs2/inode.c
index a01b8fd3a1c1..64915eeae5a7 100644
--- a/fs/gfs2/inode.c
+++ b/fs/gfs2/inode.c
@@ -1750,6 +1750,10 @@ static ssize_t gfs2_getxattr(struct dentry *dentry, const char *name,
struct gfs2_holder gh;
int ret;
+ /* For selinux during lookup */
+ if (gfs2_glock_is_locked_by_me(ip->i_gl))
+ return generic_getxattr(dentry, name, data, size);
+
gfs2_holder_init(ip->i_gl, LM_ST_SHARED, LM_FLAG_ANY, &gh);
ret = gfs2_glock_nq(&gh);
if (ret == 0) {