From 957dc93242bfa5c94b3ffecfb02c5f758cf82f37 Mon Sep 17 00:00:00 2001 From: Richard Yao Date: Fri, 11 Dec 2015 19:47:47 -0500 Subject: 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 Signed-off-by: Brian Behlendorf Closes #4104 --- lib/libzpool/kernel.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'lib') 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); } -- cgit v1.2.3