summaryrefslogtreecommitdiffstats
path: root/fs/9p/xattr.c
diff options
context:
space:
mode:
authorGeyslan G. Bem2013-10-21 21:47:58 +0200
committerEric Van Hensbergen2013-11-23 23:10:31 +0100
commitbdd5c28dcb8330b9074404cc92a0b83aae5606a9 (patch)
treec9eb26cb19bcc7d04b0775a59e893b9046f199c5 /fs/9p/xattr.c
parent9p: remove useless variable and assignment (diff)
downloadkernel-qcow2-linux-bdd5c28dcb8330b9074404cc92a0b83aae5606a9.tar.gz
kernel-qcow2-linux-bdd5c28dcb8330b9074404cc92a0b83aae5606a9.tar.xz
kernel-qcow2-linux-bdd5c28dcb8330b9074404cc92a0b83aae5606a9.zip
9p: fix return value in case in v9fs_fid_xattr_set()
In case of error in the p9_client_write, the function v9fs_fid_xattr_set should return its negative value, what was never being done. In case of success it only retuned 0. Now it returns the 'offset' variable (write_count total). Signed-off-by: Geyslan G. Bem <geyslan@gmail.com> Signed-off-by: Eric Van Hensbergen <ericvh@gmail.com>
Diffstat (limited to 'fs/9p/xattr.c')
-rw-r--r--fs/9p/xattr.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/fs/9p/xattr.c b/fs/9p/xattr.c
index 3c28cdfb8c47..04133a1fd9cb 100644
--- a/fs/9p/xattr.c
+++ b/fs/9p/xattr.c
@@ -138,8 +138,7 @@ int v9fs_fid_xattr_set(struct p9_fid *fid, const char *name,
if (retval < 0) {
p9_debug(P9_DEBUG_VFS, "p9_client_xattrcreate failed %d\n",
retval);
- p9_client_clunk(fid);
- return retval;
+ goto err;
}
msize = fid->clnt->msize;
while (value_len) {
@@ -152,12 +151,15 @@ int v9fs_fid_xattr_set(struct p9_fid *fid, const char *name,
if (write_count < 0) {
/* error in xattr write */
retval = write_count;
- break;
+ goto err;
}
offset += write_count;
value_len -= write_count;
}
- return p9_client_clunk(fid);
+ retval = offset;
+err:
+ p9_client_clunk(fid);
+ return retval;
}
ssize_t v9fs_listxattr(struct dentry *dentry, char *buffer, size_t buffer_size)