summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard Yao <[email protected]>2015-12-11 19:47:47 -0500
committerBrian Behlendorf <[email protected]>2016-01-23 10:16:26 -0800
commit957dc93242bfa5c94b3ffecfb02c5f758cf82f37 (patch)
tree51393d37f50e2dd6cffa322e7a38770774080ecc
parentee42b3d6c3e4bd16d87b75e92a2bdec5cb85cd77 (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.c5
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);
}