if (!lowerdentry || !upperdentry || d_inode(lowerdentry)->i_nlink == 1)
                return fallback;
 
-       err = vfs_getxattr(upperdentry, OVL_XATTR_NLINK, &buf, sizeof(buf) - 1);
+       err = ovl_do_getxattr(upperdentry, OVL_XATTR_NLINK,
+                             &buf, sizeof(buf) - 1);
        if (err < 0)
                goto fail;
 
 
        int res, err;
        struct ovl_fh *fh = NULL;
 
-       res = vfs_getxattr(dentry, name, NULL, 0);
+       res = ovl_do_getxattr(dentry, name, NULL, 0);
        if (res < 0) {
                if (res == -ENODATA || res == -EOPNOTSUPP)
                        return NULL;
        if (!fh)
                return ERR_PTR(-ENOMEM);
 
-       res = vfs_getxattr(dentry, name, fh->buf, res);
+       res = ovl_do_getxattr(dentry, name, fh->buf, res);
        if (res < 0)
                goto fail;
 
 
        return err;
 }
 
+static inline ssize_t ovl_do_getxattr(struct dentry *dentry, const char *name,
+                                     void *value, size_t size)
+{
+       return vfs_getxattr(dentry, name, value, size);
+}
+
 static inline int ovl_do_setxattr(struct dentry *dentry, const char *name,
                                  const void *value, size_t size, int flags)
 {
 
 {
        int res;
 
-       res = vfs_getxattr(dentry, OVL_XATTR_ORIGIN, NULL, 0);
+       res = ovl_do_getxattr(dentry, OVL_XATTR_ORIGIN, NULL, 0);
 
        /* Zero size value means "copied up but origin unknown" */
        if (res >= 0)
        if (!d_is_dir(dentry))
                return false;
 
-       res = vfs_getxattr(dentry, name, &val, 1);
+       res = ovl_do_getxattr(dentry, name, &val, 1);
        if (res == 1 && val == 'y')
                return true;
 
        if (!S_ISREG(d_inode(dentry)->i_mode))
                return 0;
 
-       res = vfs_getxattr(dentry, OVL_XATTR_METACOPY, NULL, 0);
+       res = ovl_do_getxattr(dentry, OVL_XATTR_METACOPY, NULL, 0);
        if (res < 0) {
                if (res == -ENODATA || res == -EOPNOTSUPP)
                        return 0;
        int res;
        char *s, *next, *buf = NULL;
 
-       res = vfs_getxattr(dentry, OVL_XATTR_REDIRECT, NULL, 0);
+       res = ovl_do_getxattr(dentry, OVL_XATTR_REDIRECT, NULL, 0);
        if (res == -ENODATA || res == -EOPNOTSUPP)
                return NULL;
        if (res < 0)
        if (!buf)
                return ERR_PTR(-ENOMEM);
 
-       res = vfs_getxattr(dentry, OVL_XATTR_REDIRECT, buf, res);
+       res = ovl_do_getxattr(dentry, OVL_XATTR_REDIRECT, buf, res);
        if (res < 0)
                goto fail;
        if (res == 0)