diff options
author | Geyslan G. Bem <geyslan@gmail.com> | 2013-10-21 23:47:58 +0400 |
---|---|---|
committer | Eric Van Hensbergen <ericvh@gmail.com> | 2013-11-24 02:10:31 +0400 |
commit | bdd5c28dcb8330b9074404cc92a0b83aae5606a9 (patch) | |
tree | c9eb26cb19bcc7d04b0775a59e893b9046f199c5 /fs/9p/xattr.c | |
parent | 72fe18c9c71c1911b02d4765661ea1522053b5df (diff) | |
download | linux-bdd5c28dcb8330b9074404cc92a0b83aae5606a9.tar.xz |
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.c | 10 |
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) |