diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2008-10-19 10:32:20 -0700 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2008-10-25 14:32:41 -0700 |
commit | 07a96d7019701ce9e6be9bd975e4f9d021649a8f (patch) | |
tree | 7218760bf924b272a55682c3632bc4791aaff27f /kernel/ns_cgroup.c | |
parent | 373775331502999bcf0e37e8cb06488f65482939 (diff) |
anon_vma_prepare: properly lock even newly allocated entries
commit d9d332e0874f46b91d8ac4604b68ee42b8a7a2c6 upstream
The anon_vma code is very subtle, and we end up doing optimistic lookups
of anon_vmas under RCU in page_lock_anon_vma() with no locking. Other
CPU's can also see the newly allocated entry immediately after we've
exposed it by setting "vma->anon_vma" to the new value.
We protect against the anon_vma being destroyed by having the SLAB
marked as SLAB_DESTROY_BY_RCU, so the RCU lookup can depend on the
allocation not being destroyed - but it might still be free'd and
re-allocated here to a new vma.
As a result, we should not do the anon_vma list ops on a newly allocated
vma without proper locking.
Acked-by: Nick Piggin <npiggin@suse.de>
Acked-by: Hugh Dickins <hugh@veritas.com>
Acked-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'kernel/ns_cgroup.c')
0 files changed, 0 insertions, 0 deletions