9a24d04a3c
While we were reviewing pageattr_32/64.c for unification,
Thomas Gleixner noticed the following serious SMP bug in
global_flush_tlb():
down_read(&init_mm.mmap_sem);
list_replace_init(&deferred_pages, &l);
up_read(&init_mm.mmap_sem);
this is SMP-unsafe because list_replace_init() done on two CPUs in
parallel can corrupt the list.
This bug has been introduced about a year ago in the 64-bit tree:
commit
|
||
---|---|---|
.. | ||
boot_ioremap_32.c | ||
discontig_32.c | ||
extable_32.c | ||
extable_64.c | ||
fault_32.c | ||
fault_64.c | ||
highmem_32.c | ||
hugetlbpage.c | ||
init_32.c | ||
init_64.c | ||
ioremap_32.c | ||
ioremap_64.c | ||
k8topology_64.c | ||
Makefile | ||
Makefile_32 | ||
Makefile_64 | ||
mmap_32.c | ||
mmap_64.c | ||
numa_64.c | ||
pageattr_32.c | ||
pageattr_64.c | ||
pgtable_32.c | ||
srat_64.c |