mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-05 02:21:52 +09:00
Merge 9135df0218 ("io_uring: fix corner case forgetting to vunmap") into android14-6.1-lts
Steps on the way to 6.1.132 Change-Id: I855f7a2603de64f149c734218c9d7e2bc26c2a15 Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
This commit is contained in:
@@ -2611,6 +2611,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)) {
|
||||
@@ -2619,7 +2621,7 @@ done:
|
||||
*npages = nr_pages;
|
||||
return ret;
|
||||
}
|
||||
|
||||
fail:
|
||||
kvfree(pages);
|
||||
*out_pages = NULL;
|
||||
*npages = 0;
|
||||
@@ -3237,6 +3239,7 @@ static __cold int io_uring_mmap(struct file *file, struct vm_area_struct *vma)
|
||||
struct io_ring_ctx *ctx = file->private_data;
|
||||
size_t sz = vma->vm_end - vma->vm_start;
|
||||
long offset = vma->vm_pgoff << PAGE_SHIFT;
|
||||
unsigned int npages;
|
||||
unsigned long pfn;
|
||||
void *ptr;
|
||||
|
||||
@@ -3247,8 +3250,8 @@ static __cold int io_uring_mmap(struct file *file, struct vm_area_struct *vma)
|
||||
switch (offset & IORING_OFF_MMAP_MASK) {
|
||||
case IORING_OFF_SQ_RING:
|
||||
case IORING_OFF_CQ_RING:
|
||||
return io_uring_mmap_pages(ctx, vma, ctx->ring_pages,
|
||||
ctx->n_ring_pages);
|
||||
npages = min(ctx->n_ring_pages, (sz + PAGE_SIZE - 1) >> PAGE_SHIFT);
|
||||
return io_uring_mmap_pages(ctx, vma, ctx->ring_pages, npages);
|
||||
case IORING_OFF_SQES:
|
||||
return io_uring_mmap_pages(ctx, vma, ctx->sqe_pages,
|
||||
ctx->n_sqe_pages);
|
||||
|
||||
Reference in New Issue
Block a user