Linus Torvalds d9d332e087 anon_vma_prepare: properly lock even newly allocated entries
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>
2008-10-19 11:50:35 -07:00
..
2008-07-28 16:30:21 -07:00
2008-07-24 10:47:17 -07:00
2008-07-28 16:30:21 -07:00
2008-08-04 21:31:34 -07:00
2007-10-20 01:27:18 +02:00
2008-08-04 21:31:34 -07:00
2008-04-28 08:58:18 -07:00
2008-08-04 16:58:45 -07:00
2008-07-28 16:30:21 -07:00
2008-07-28 16:30:21 -07:00
2008-07-28 16:30:21 -07:00
2007-05-21 09:18:19 -07:00
2008-08-04 16:01:47 +09:00
2008-02-05 09:44:19 -08:00
2008-06-12 18:05:41 -07:00
2007-10-20 01:27:18 +02:00
2008-10-18 07:10:11 +10:00
2008-07-29 23:44:26 +03:00
2008-10-09 12:18:27 -07:00
2008-07-04 10:40:04 -07:00
2008-08-20 15:40:30 -07:00
2008-08-04 21:31:34 -07:00
2008-08-04 21:31:34 -07:00
2008-10-02 15:53:13 -07:00
2008-08-04 21:31:34 -07:00