diff --git a/fs/gfs2/acl.c b/fs/gfs2/acl.c
index 7919326..343c489 100644
--- a/fs/gfs2/acl.c
+++ b/fs/gfs2/acl.c
@@ -41,30 +41,35 @@
 struct posix_acl *gfs2_get_acl(struct inode *inode, int type)
 {
 	struct gfs2_inode *ip = GFS2_I(inode);
-	struct posix_acl *acl;
-	const char *name;
-	char *data;
-	int len;
+	struct gfs2_holder gh;
+	bool locked = gfs2_glock_is_locked_by_me(ip->i_gl);
+	struct posix_acl *acl = NULL;
+	int ret;
 
-	if (!ip->i_eattr)
-		return NULL;
+	if (!locked) {
+		ret = gfs2_glock_nq_init(ip->i_gl, LM_ST_SHARED, LM_FLAG_ANY,
+					 &gh);
+		if (unlikely(ret))
+			return ERR_PTR(ret);
+	}
+	if (ip->i_eattr) {
+		const char *name = gfs2_acl_name(type);
+		char *data;
 
-	name = gfs2_acl_name(type);
-	if (name == NULL)
-		return ERR_PTR(-EINVAL);
-
-	len = gfs2_xattr_acl_get(ip, name, &data);
-	if (len < 0)
-		return ERR_PTR(len);
-	if (len == 0)
-		return NULL;
-
-	acl = posix_acl_from_xattr(&init_user_ns, data, len);
-	kfree(data);
+		ret = gfs2_xattr_acl_get(ip, name, &data);
+		if (ret <= 0) {
+			acl = ERR_PTR(ret);
+		} else {
+			acl = posix_acl_from_xattr(&init_user_ns, data, ret);
+			kfree(data);
+		}
+	}
+	if (!locked)
+		gfs2_glock_dq_uninit(&gh);
 	return acl;
 }
 
-int gfs2_set_acl(struct inode *inode, struct posix_acl *acl, int type)
+int __gfs2_set_acl(struct inode *inode, struct posix_acl *acl, int type)
 {
 	int error;
 	int len;
@@ -115,3 +120,15 @@
 	kfree(data);
 	return error;
 }
+
+int gfs2_set_acl(struct inode *inode, struct posix_acl *acl, int type)
+{
+	struct gfs2_inode *ip = GFS2_I(inode);
+	struct gfs2_holder gh;
+	int ret = gfs2_glock_nq_init(ip->i_gl, LM_ST_EXCLUSIVE, 0, &gh);
+	if (ret == 0) {
+		ret = __gfs2_set_acl(inode, acl, type);
+		gfs2_glock_dq_uninit(&gh);
+	}
+	return ret;
+}
diff --git a/fs/gfs2/acl.h b/fs/gfs2/acl.h
index 3af4f40..f674fdd 100644
--- a/fs/gfs2/acl.h
+++ b/fs/gfs2/acl.h
@@ -15,6 +15,7 @@
 #define GFS2_ACL_MAX_ENTRIES(sdp) ((300 << (sdp)->sd_sb.sb_bsize_shift) >> 12)
 
 extern struct posix_acl *gfs2_get_acl(struct inode *inode, int type);
+extern int __gfs2_set_acl(struct inode *inode, struct posix_acl *acl, int type);
 extern int gfs2_set_acl(struct inode *inode, struct posix_acl *acl, int type);
 
 #endif /* __ACL_DOT_H__ */
diff --git a/fs/gfs2/inode.c b/fs/gfs2/inode.c
index 3398342..72e9c64 100644
--- a/fs/gfs2/inode.c
+++ b/fs/gfs2/inode.c
@@ -692,12 +692,12 @@
 			       considered free. Any failures need to undo
 			       the gfs2 structures. */
 	if (default_acl) {
-		error = gfs2_set_acl(inode, default_acl, ACL_TYPE_DEFAULT);
+		error = __gfs2_set_acl(inode, default_acl, ACL_TYPE_DEFAULT);
 		posix_acl_release(default_acl);
 	}
 	if (acl) {
 		if (!error)
-			error = gfs2_set_acl(inode, acl, ACL_TYPE_ACCESS);
+			error = __gfs2_set_acl(inode, acl, ACL_TYPE_ACCESS);
 		posix_acl_release(acl);
 	}
 
diff --git a/fs/gfs2/xattr.c b/fs/gfs2/xattr.c
index 92d5b4c..216ab4cc 100644
--- a/fs/gfs2/xattr.c
+++ b/fs/gfs2/xattr.c
@@ -1472,63 +1472,6 @@
 	return error;
 }
 
-static int gfs2_posix_acl_xattr_get(const struct xattr_handler *handler,
-				    struct dentry *dentry, struct inode *inode,
-				    const char *name, void *buffer, size_t size)
-{
-	struct gfs2_inode *ip = GFS2_I(inode);
-	struct gfs2_holder gh;
-	int ret;
-
-	/* For selinux during lookup */
-	if (gfs2_glock_is_locked_by_me(ip->i_gl))
-		return posix_acl_xattr_get(handler, dentry, inode, name, buffer, size);
-
-	gfs2_holder_init(ip->i_gl, LM_ST_SHARED, LM_FLAG_ANY, &gh);
-	ret = gfs2_glock_nq(&gh);
-	if (ret == 0) {
-		ret = posix_acl_xattr_get(handler, dentry, inode, name, buffer, size);
-		gfs2_glock_dq(&gh);
-	}
-	gfs2_holder_uninit(&gh);
-	return ret;
-}
-
-static int gfs2_posix_acl_xattr_set(const struct xattr_handler *handler,
-				    struct dentry *dentry, const char *name,
-				    const void *value, size_t size, int flags)
-{
-	struct inode *inode = d_inode(dentry);
-	struct gfs2_inode *ip = GFS2_I(inode);
-	struct gfs2_holder gh;
-	int ret;
-
-	gfs2_holder_init(ip->i_gl, LM_ST_EXCLUSIVE, 0, &gh);
-	ret = gfs2_glock_nq(&gh);
-	if (ret == 0) {
-		ret = posix_acl_xattr_set(handler, dentry, name, value, size, flags);
-		gfs2_glock_dq(&gh);
-	}
-	gfs2_holder_uninit(&gh);
-	return ret;
-}
-
-static const struct xattr_handler gfs2_posix_acl_access_xattr_handler = {
-	.name = XATTR_NAME_POSIX_ACL_ACCESS,
-	.flags = ACL_TYPE_ACCESS,
-	.list = posix_acl_xattr_list,
-	.get = gfs2_posix_acl_xattr_get,
-	.set = gfs2_posix_acl_xattr_set,
-};
-
-static const struct xattr_handler gfs2_posix_acl_default_xattr_handler = {
-	.name = XATTR_NAME_POSIX_ACL_DEFAULT,
-	.flags = ACL_TYPE_DEFAULT,
-	.list = posix_acl_xattr_list,
-	.get = gfs2_posix_acl_xattr_get,
-	.set = gfs2_posix_acl_xattr_set,
-};
-
 static const struct xattr_handler gfs2_xattr_user_handler = {
 	.prefix = XATTR_USER_PREFIX,
 	.flags  = GFS2_EATYPE_USR,
@@ -1546,8 +1489,8 @@
 const struct xattr_handler *gfs2_xattr_handlers[] = {
 	&gfs2_xattr_user_handler,
 	&gfs2_xattr_security_handler,
-	&gfs2_posix_acl_access_xattr_handler,
-	&gfs2_posix_acl_default_xattr_handler,
+	&posix_acl_access_xattr_handler,
+	&posix_acl_default_xattr_handler,
 	NULL,
 };
 
diff --git a/fs/posix_acl.c b/fs/posix_acl.c
index 1da2c63..2c60f17 100644
--- a/fs/posix_acl.c
+++ b/fs/posix_acl.c
@@ -795,7 +795,7 @@
 }
 EXPORT_SYMBOL (posix_acl_to_xattr);
 
-int
+static int
 posix_acl_xattr_get(const struct xattr_handler *handler,
 		    struct dentry *unused, struct inode *inode,
 		    const char *name, void *value, size_t size)
@@ -819,9 +819,8 @@
 
 	return error;
 }
-EXPORT_SYMBOL(posix_acl_xattr_get);
 
-int
+static int
 posix_acl_xattr_set(const struct xattr_handler *handler,
 		    struct dentry *dentry, const char *name,
 		    const void *value, size_t size, int flags)
@@ -857,14 +856,12 @@
 	posix_acl_release(acl);
 	return ret;
 }
-EXPORT_SYMBOL(posix_acl_xattr_set);
 
-bool
+static bool
 posix_acl_xattr_list(struct dentry *dentry)
 {
 	return IS_POSIXACL(d_backing_inode(dentry));
 }
-EXPORT_SYMBOL(posix_acl_xattr_list);
 
 const struct xattr_handler posix_acl_access_xattr_handler = {
 	.name = XATTR_NAME_POSIX_ACL_ACCESS,
diff --git a/include/linux/posix_acl_xattr.h b/include/linux/posix_acl_xattr.h
index c92607c..e5e8ec4 100644
--- a/include/linux/posix_acl_xattr.h
+++ b/include/linux/posix_acl_xattr.h
@@ -65,14 +65,6 @@
 int posix_acl_to_xattr(struct user_namespace *user_ns,
 		       const struct posix_acl *acl, void *buffer, size_t size);
 
-int posix_acl_xattr_get(const struct xattr_handler *handler,
-			struct dentry *unused, struct inode *inode,
-			const char *name, void *value, size_t size);
-int posix_acl_xattr_set(const struct xattr_handler *handler,
-			struct dentry *dentry, const char *name,
-			const void *value, size_t size, int flags);
-bool posix_acl_xattr_list(struct dentry *dentry);
-
 extern const struct xattr_handler posix_acl_access_xattr_handler;
 extern const struct xattr_handler posix_acl_default_xattr_handler;
 
