mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-11 12:28:41 +08:00
[PATCH] Undo mempolicy shared policy rbtree microoptimization
All mempolicy changes must be inside the spinlock and readding the rb_erase prevents a crash while doing: > echo "1" > /tmp/numatest > numactl --length=0x4000 --shm /tmp/numatest --localalloc > numactl --length=0x2000 --offset=0 --shm /tmp/numatest --membind=0 > numactl --length=0x2000 --offset=0x2000 --shm /tmp/numatest --membind=1 > ipcs > ipcrm -M "the_key_value_of_this_shm_area" Based on a patch by John Blackwood Cc: <john.blackwood@ccur.com> Cc: <andrea@suse.de> Signed-off-by: Andi Kleen <ak@suse.de> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
parent
c223695634
commit
90c5029e47
@ -1138,11 +1138,11 @@ void mpol_free_shared_policy(struct shared_policy *p)
|
||||
while (next) {
|
||||
n = rb_entry(next, struct sp_node, nd);
|
||||
next = rb_next(&n->nd);
|
||||
rb_erase(&n->nd, &p->root);
|
||||
mpol_free(n->policy);
|
||||
kmem_cache_free(sn_cache, n);
|
||||
}
|
||||
spin_unlock(&p->lock);
|
||||
p->root = RB_ROOT;
|
||||
}
|
||||
|
||||
/* assumes fs == KERNEL_DS */
|
||||
|
Loading…
Reference in New Issue
Block a user