Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 299452
b: refs/heads/master
c: 936af15
h: refs/heads/master
v: v3
  • Loading branch information
Al Viro committed Apr 21, 2012
1 parent 2f7c058 commit 780a498
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 2 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 6be5ceb02e98eaf6cfc4f8b12a896d04023f340d
refs/heads/master: 936af1576e4c24b466380fc2b8d93352161d13b0
15 changes: 14 additions & 1 deletion trunk/fs/aio.c
Original file line number Diff line number Diff line change
Expand Up @@ -92,8 +92,10 @@ static void aio_free_ring(struct kioctx *ctx)
for (i=0; i<info->nr_pages; i++)
put_page(info->ring_pages[i]);

if (info->mmap_size)
if (info->mmap_size) {
BUG_ON(ctx->mm != current->mm);
vm_munmap(ctx->mm, info->mmap_base, info->mmap_size);
}

if (info->ring_pages && info->ring_pages != info->internal_pages)
kfree(info->ring_pages);
Expand Down Expand Up @@ -386,6 +388,17 @@ void exit_aio(struct mm_struct *mm)
"exit_aio:ioctx still alive: %d %d %d\n",
atomic_read(&ctx->users), ctx->dead,
ctx->reqs_active);
/*
* We don't need to bother with munmap() here -
* exit_mmap(mm) is coming and it'll unmap everything.
* Since aio_free_ring() uses non-zero ->mmap_size
* as indicator that it needs to unmap the area,
* just set it to 0; aio_free_ring() is the only
* place that uses ->mmap_size, so it's safe.
* That way we get all munmap done to current->mm -
* all other callers have ctx->mm == current->mm.
*/
ctx->ring_info.mmap_size = 0;
put_ioctx(ctx);
}
}
Expand Down

0 comments on commit 780a498

Please sign in to comment.