diff options
author | Richard Yao <[email protected]> | 2015-12-11 19:47:47 -0500 |
---|---|---|
committer | Brian Behlendorf <[email protected]> | 2016-01-23 10:16:26 -0800 |
commit | 957dc93242bfa5c94b3ffecfb02c5f758cf82f37 (patch) | |
tree | 51393d37f50e2dd6cffa322e7a38770774080ecc | |
parent | ee42b3d6c3e4bd16d87b75e92a2bdec5cb85cd77 (diff) |
kobj_read_file: Return -1 on vn_rdwr() error
LLVM's static analyzer showed that we could subtract using an
uninitialized value on an error from vn_rdwr().
The correct behavior is to return -1 on an error, so lets do that
instead.
Signed-off-by: Richard Yao <[email protected]>
Signed-off-by: Brian Behlendorf <[email protected]>
Closes #4104
-rw-r--r-- | lib/libzpool/kernel.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/lib/libzpool/kernel.c b/lib/libzpool/kernel.c index 6ed08bdb0..a69a8da3a 100644 --- a/lib/libzpool/kernel.c +++ b/lib/libzpool/kernel.c @@ -997,8 +997,9 @@ kobj_read_file(struct _buf *file, char *buf, unsigned size, unsigned off) { ssize_t resid; - vn_rdwr(UIO_READ, (vnode_t *)file->_fd, buf, size, (offset_t)off, - UIO_SYSSPACE, 0, 0, 0, &resid); + if (vn_rdwr(UIO_READ, (vnode_t *)file->_fd, buf, size, (offset_t)off, + UIO_SYSSPACE, 0, 0, 0, &resid) != 0) + return (-1); return (size - resid); } |