diff options
author | Vincent Bernat <vincent@bernat.im> | 2015-08-15 14:07:44 +0200 |
---|---|---|
committer | Eric Van Hensbergen <ericvh@gmail.com> | 2015-08-23 21:21:36 +0200 |
commit | b5ac1fb2717e48177d3f73f9e4c9b556c0a24c6b (patch) | |
tree | 78aa2dda3eaae2b11d3775ccd0a8aa0f2cd28646 /fs/9p | |
parent | 9p: remove unused option Opt_trans (diff) | |
download | linux-b5ac1fb2717e48177d3f73f9e4c9b556c0a24c6b.tar.xz linux-b5ac1fb2717e48177d3f73f9e4c9b556c0a24c6b.zip |
9p: fix return code of read() when count is 0
When reading 0 bytes from an empty file on a 9P filesystem, the return
code of read() was not 0 as expected due to an unitialized err variable.
Tested with this simple program:
#include <assert.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
int main(int argc, const char **argv)
{
assert(argc == 2);
char buffer[256];
int fd = open(argv[1], O_RDONLY|O_NOCTTY);
assert(fd >= 0);
assert(read(fd, buffer, 0) == 0);
return 0;
}
Signed-off-by: Vincent Bernat <vincent@bernat.im>
Signed-off-by: Eric Van Hensbergen <ericvh@gmail.com>
Diffstat (limited to 'fs/9p')
-rw-r--r-- | fs/9p/vfs_file.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/fs/9p/vfs_file.c b/fs/9p/vfs_file.c index 1ef16bd8280b..3abc447783aa 100644 --- a/fs/9p/vfs_file.c +++ b/fs/9p/vfs_file.c @@ -381,7 +381,7 @@ static ssize_t v9fs_file_read_iter(struct kiocb *iocb, struct iov_iter *to) { struct p9_fid *fid = iocb->ki_filp->private_data; - int ret, err; + int ret, err = 0; p9_debug(P9_DEBUG_VFS, "count %zu offset %lld\n", iov_iter_count(to), iocb->ki_pos); |