diff --git a/fs/9p/vfs_inode.c b/fs/9p/vfs_inode.c
index 00d140fb22639271b8d1145adff6087940a6b486..7fa4f7a7653d3f73765de06c58bba9c24eedbe9a 100644
--- a/fs/9p/vfs_inode.c
+++ b/fs/9p/vfs_inode.c
@@ -147,7 +147,7 @@ static umode_t p9mode2unixmode(struct v9fs_session_info *v9ses,
 		int major = -1, minor = -1;
 
 		strlcpy(ext, stat->extension, sizeof(ext));
-		sscanf(ext, "%c %u %u", &type, &major, &minor);
+		sscanf(ext, "%c %i %i", &type, &major, &minor);
 		switch (type) {
 		case 'c':
 			res |= S_IFCHR;
diff --git a/fs/9p/xattr.c b/fs/9p/xattr.c
index 04133a1fd9cbea42585f530b56bb73f93b1bd1dc..f95e01e058e4de657b3cd85aafc233f0565c6e16 100644
--- a/fs/9p/xattr.c
+++ b/fs/9p/xattr.c
@@ -156,7 +156,7 @@ int v9fs_fid_xattr_set(struct p9_fid *fid, const char *name,
 		offset += write_count;
 		value_len -= write_count;
 	}
-	retval = offset;
+	retval = 0;
 err:
 	p9_client_clunk(fid);
 	return retval;