diff --git a/src/system/kernel/device_manager/io_requests.cpp b/src/system/kernel/device_manager/io_requests.cpp index 9e837423c2..60b717bad4 100644 --- a/src/system/kernel/device_manager/io_requests.cpp +++ b/src/system/kernel/device_manager/io_requests.cpp @@ -850,7 +850,9 @@ IORequest::Advance(size_t bySize) fTransferSize += bySize; iovec* vecs = fBuffer->Vecs(); - while (vecs[fVecIndex].iov_len - fVecOffset <= bySize) { + uint32 vecCount = fBuffer->VecCount(); + while (fVecIndex < vecCount + && vecs[fVecIndex].iov_len - fVecOffset <= bySize) { bySize -= vecs[fVecIndex].iov_len - fVecOffset; fVecOffset = 0; fVecIndex++;