GFS2: Check for glock already held in gfs2_getxattr
authorSteven Whitehouse <swhiteho@redhat.com>
Fri, 16 Aug 2013 20:10:28 +0000 (21:10 +0100)
committerSteven Whitehouse <swhiteho@redhat.com>
Mon, 19 Aug 2013 08:33:57 +0000 (09:33 +0100)
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>
fs/gfs2/inode.c

index a01b8fd..64915ee 100644 (file)
@@ -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) {