Skip to content

Commit 999b8b8

Browse files
vincentbernatAl Viro
authored andcommitted
9p: ensure err is initialized to 0 in p9_client_read/write
Some use of those functions were providing unitialized values to those functions. Notably, when reading 0 bytes from an empty file on a 9P filesystem, the return code of read() was not 0. 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; } Cc: [email protected] # v4.1 Signed-off-by: Vincent Bernat <[email protected]> Signed-off-by: Al Viro <[email protected]>
1 parent 45e38cf commit 999b8b8

File tree

1 file changed

+2
-0
lines changed

1 file changed

+2
-0
lines changed

net/9p/client.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1541,6 +1541,7 @@ p9_client_read(struct p9_fid *fid, u64 offset, struct iov_iter *to, int *err)
15411541
struct p9_client *clnt = fid->clnt;
15421542
struct p9_req_t *req;
15431543
int total = 0;
1544+
*err = 0;
15441545

15451546
p9_debug(P9_DEBUG_9P, ">>> TREAD fid %d offset %llu %d\n",
15461547
fid->fid, (unsigned long long) offset, (int)iov_iter_count(to));
@@ -1620,6 +1621,7 @@ p9_client_write(struct p9_fid *fid, u64 offset, struct iov_iter *from, int *err)
16201621
struct p9_client *clnt = fid->clnt;
16211622
struct p9_req_t *req;
16221623
int total = 0;
1624+
*err = 0;
16231625

16241626
p9_debug(P9_DEBUG_9P, ">>> TWRITE fid %d offset %llu count %zd\n",
16251627
fid->fid, (unsigned long long) offset,

0 commit comments

Comments
 (0)