diff --git a/fs/ceph/xattr.c b/fs/ceph/xattr.c index 1e1c00a6d907f56c5f412a653ae30abe2a537230..139cdef8eb41bb8de5b6cc8b312ae1e464a4f94c 100644 --- a/fs/ceph/xattr.c +++ b/fs/ceph/xattr.c @@ -727,8 +727,10 @@ ssize_t __ceph_getxattr(struct inode *inode, const char *name, void *value, /* let's see if a virtual xattr was requested */ vxattr = ceph_match_vxattr(inode, name); - if (vxattr && !(vxattr->exists_cb && !vxattr->exists_cb(ci))) { - err = vxattr->getxattr_cb(ci, value, size); + if (vxattr) { + err = -ENODATA; + if (!(vxattr->exists_cb && !vxattr->exists_cb(ci))) + err = vxattr->getxattr_cb(ci, value, size); return err; }