diff options
| author | Takashi Iwai <tiwai@suse.de> | 2022-09-22 13:54:20 +0200 |
|---|---|---|
| committer | Takashi Iwai <tiwai@suse.de> | 2022-09-22 13:54:20 +0200 |
| commit | af45a0d32df9c8f5abbbc7401d70ffa296c8cef6 (patch) | |
| tree | f162ece8fa7d94374d15801d614849db649282ac /io_uring/kbuf.h | |
| parent | b5eee17cf7ddaf7b29a031b2c48277038e7a171a (diff) | |
| parent | c35fbea48659ec99a4f532c9ee9e8692405afdd0 (diff) | |
Merge branch 'for-linus' into for-next
Diffstat (limited to 'io_uring/kbuf.h')
| -rw-r--r-- | io_uring/kbuf.h | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/io_uring/kbuf.h b/io_uring/kbuf.h index d6af208d109f..746fbf31a703 100644 --- a/io_uring/kbuf.h +++ b/io_uring/kbuf.h @@ -91,9 +91,13 @@ static inline void io_kbuf_recycle(struct io_kiocb *req, unsigned issue_flags) * buffer data. However if that buffer is recycled the original request * data stored in addr is lost. Therefore forbid recycling for now. */ - if (req->opcode == IORING_OP_READV) + if (req->opcode == IORING_OP_READV) { + if ((req->flags & REQ_F_BUFFER_RING) && req->buf_list) { + req->buf_list->head++; + req->buf_list = NULL; + } return; - + } if (req->flags & REQ_F_BUFFER_SELECTED) io_kbuf_recycle_legacy(req, issue_flags); if (req->flags & REQ_F_BUFFER_RING) |
