diff options
author | Wu Fengguang <fengguang.wu@intel.com> | 2009-09-18 13:06:03 -0700 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2009-09-24 07:47:30 -0400 |
commit | 05cc0cee6948fc11985d11557fb130645a7f69a6 (patch) | |
tree | 51c49ba648c4c6b1ed025b93d6fdb02394ab978a /fs/libfs.c | |
parent | 7a62cc10215838286c747f86766063d5f01fcbd6 (diff) | |
download | kernel-common-05cc0cee6948fc11985d11557fb130645a7f69a6.tar.gz kernel-common-05cc0cee6948fc11985d11557fb130645a7f69a6.tar.bz2 kernel-common-05cc0cee6948fc11985d11557fb130645a7f69a6.zip |
libfs: return error code on failed attr set
Currently all simple_attr.set handlers return 0 on success and negative
codes on error. Fix simple_attr_write() to return these error codes.
Signed-off-by: Wu Fengguang <fengguang.wu@intel.com>
Cc: Theodore Ts'o <tytso@mit.edu>
Cc: Al Viro <viro@zeniv.linux.org.uk>
Cc: Christoph Hellwig <hch@lst.de>
Cc: Nick Piggin <npiggin@suse.de>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'fs/libfs.c')
-rw-r--r-- | fs/libfs.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/fs/libfs.c b/fs/libfs.c index 662a28e4f667..219576c52d80 100644 --- a/fs/libfs.c +++ b/fs/libfs.c @@ -739,10 +739,11 @@ ssize_t simple_attr_write(struct file *file, const char __user *buf, if (copy_from_user(attr->set_buf, buf, size)) goto out; - ret = len; /* claim we got the whole input */ attr->set_buf[size] = '\0'; val = simple_strtol(attr->set_buf, NULL, 0); - attr->set(attr->data, val); + ret = attr->set(attr->data, val); + if (ret == 0) + ret = len; /* on success, claim we got the whole input */ out: mutex_unlock(&attr->mutex); return ret; |