diff --git a/module/zcommon/zfs_uio.c b/module/zcommon/zfs_uio.c index 6037fed80151..f78db68e4ea6 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--;