diff --git a/fs/io_uring.c b/fs/io_uring.c index e71aa42e102ab546e64f58f39edbce17be1fa297..b06188a50af449e23902a8f90e4668bb8b7ae9ac 100644 --- a/fs/io_uring.c +++ b/fs/io_uring.c @@ -2493,8 +2493,9 @@ static void io_req_map_rw(struct io_kiocb *req, ssize_t io_size, req->io->rw.iov = iovec; if (!req->io->rw.iov) { req->io->rw.iov = req->io->rw.fast_iov; - memcpy(req->io->rw.iov, fast_iov, - sizeof(struct iovec) * iter->nr_segs); + if (req->io->rw.iov != fast_iov) + memcpy(req->io->rw.iov, fast_iov, + sizeof(struct iovec) * iter->nr_segs); } else { req->flags |= REQ_F_NEED_CLEANUP; }