diff --git a/glommio/src/io/dma_file_stream.rs b/glommio/src/io/dma_file_stream.rs index c482c63a4..bf1bb8932 100644 --- a/glommio/src/io/dma_file_stream.rs +++ b/glommio/src/io/dma_file_stream.rs @@ -566,12 +566,18 @@ impl DmaStreamReader { pub fn poll_get_buffer_aligned( &mut self, cx: &mut Context<'_>, - len: u64, + mut len: u64, ) -> Poll> { let (start_id, buffer_len, remaining) = { let state = self.state.borrow(); let start_id = state.buffer_id(self.current_pos); let offset = state.offset_of(self.current_pos); + + // enforce max_pos + if self.current_pos + len > state.max_pos { + len = state.max_pos - self.current_pos; + } + let buffer_len = (self.buffer_size - offset as u64).min(len); (start_id, buffer_len, len - buffer_len) };