summaryrefslogtreecommitdiffstats
path: root/module/zcommon
diff options
context:
space:
mode:
Diffstat (limited to 'module/zcommon')
-rw-r--r--module/zcommon/zfs_uio.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/module/zcommon/zfs_uio.c b/module/zcommon/zfs_uio.c
index 6037fed80..f78db68e4 100644
--- a/module/zcommon/zfs_uio.c
+++ b/module/zcommon/zfs_uio.c
@@ -236,13 +236,15 @@ uioskip(uio_t *uiop, size_t n)
uiop->uio_skip += n;
if (uiop->uio_segflg != UIO_BVEC) {
- while (uiop->uio_skip >= uiop->uio_iov->iov_len) {
+ while (uiop->uio_iovcnt &&
+ uiop->uio_skip >= uiop->uio_iov->iov_len) {
uiop->uio_skip -= uiop->uio_iov->iov_len;
uiop->uio_iov++;
uiop->uio_iovcnt--;
}
} else {
- while (uiop->uio_skip >= uiop->uio_bvec->bv_len) {
+ while (uiop->uio_iovcnt &&
+ uiop->uio_skip >= uiop->uio_bvec->bv_len) {
uiop->uio_skip -= uiop->uio_bvec->bv_len;
uiop->uio_bvec++;
uiop->uio_iovcnt--;