diff --git a/io_uring/io_uring.c b/io_uring/io_uring.c index 53ec5bb245c8..a2de3c491d27 100644 --- a/io_uring/io_uring.c +++ b/io_uring/io_uring.c @@ -2890,6 +2890,8 @@ static void *io_pages_map(struct page ***out_pages, unsigned short *npages, ret = io_mem_alloc_compound(pages, nr_pages, size, gfp); if (!IS_ERR(ret)) goto done; + if (nr_pages == 1) + goto fail; ret = io_mem_alloc_single(pages, nr_pages, size, gfp); if (!IS_ERR(ret)) { @@ -2898,7 +2900,7 @@ done: *npages = nr_pages; return ret; } - +fail: kvfree(pages); *out_pages = NULL; *npages = 0;