diff --git a/fs/ceph/inode.c b/fs/ceph/inode.c
index 3e6b52cb5ee85e58d58fc98dacc3c9e11242759f..e7cca414da03bcbd7549889a5ecb00d05ee11901 100644
--- a/fs/ceph/inode.c
+++ b/fs/ceph/inode.c
@@ -1230,11 +1230,11 @@ retry_lookup:
 			in = dn->d_inode;
 		} else {
 			in = ceph_get_inode(parent->d_sb, vino);
-			if (in == NULL) {
+			if (IS_ERR(in)) {
 				dout("new_inode badness\n");
 				d_delete(dn);
 				dput(dn);
-				err = -ENOMEM;
+				err = PTR_ERR(in);
 				goto out;
 			}
 			dn = splice_dentry(dn, in, NULL);