Srivatsa S. Bhat
576378249c
mm, zswap: Fix CPU hotplug callback registration
...
Subsystems that want to register CPU hotplug callbacks, as well as perform
initialization for the CPUs that are already online, often do it as shown
below:
get_online_cpus();
for_each_online_cpu(cpu)
init_cpu(cpu);
register_cpu_notifier(&foobar_cpu_notifier);
put_online_cpus();
This is wrong, since it is prone to ABBA deadlocks involving the
cpu_add_remove_lock and the cpu_hotplug.lock (when running concurrently
with CPU hotplug operations).
Instead, the correct and race-free way of performing the callback
registration is:
cpu_notifier_register_begin();
for_each_online_cpu(cpu)
init_cpu(cpu);
/* Note the use of the double underscored version of the API */
__register_cpu_notifier(&foobar_cpu_notifier);
cpu_notifier_register_done();
Fix the zswap code by using this latter form of callback registration.
Cc: Ingo Molnar <[email protected] >
Signed-off-by: Srivatsa S. Bhat <[email protected] >
Signed-off-by: Rafael J. Wysocki <[email protected] >
2014-03-20 13:43:48 +01:00
..
backing-dev.c
mm/backing-dev.c: check user buffer length before copying data to the related user buffer
2013-09-11 15:58:03 -07:00
balloon_compaction.c
mm: print more details for bad_page()
2014-01-23 16:36:50 -08:00
bootmem.c
mm/bootmem.c: remove unused local `map'
2013-11-13 12:09:09 +09:00
bounce.c
block: Convert bio_for_each_segment() to bvec_iter
2013-11-23 22:33:49 -08:00
cleancache.c
mm: dump page when hitting a VM_BUG_ON using VM_BUG_ON_PAGE
2014-01-23 16:36:50 -08:00
compaction.c
mm/compaction: break out of loop on !PageBuddy in isolate_freepages_block
2014-03-10 17:26:20 -07:00
debug-pagealloc.c
dmapool.c
fadvise.c
failslab.c
filemap.c
fix O_SYNC|O_APPEND syncing the wrong range on write()
2014-02-09 15:18:09 -05:00
filemap_xip.c
seqcount: Add lockdep functionality to seqcount/seqlock structures
2013-11-06 12:40:26 +01:00
fremap.c
mm: fix use-after-free in sys_remap_file_pages
2014-01-02 14:40:30 -08:00
frontswap.c
frontswap: fix incorrect zeroing and allocation size for frontswap_map
2013-06-12 16:29:46 -07:00
highmem.c
huge_memory.c
mm: include VM_MIXEDMAP flag in the VM_SPECIAL list to avoid m(un)locking
2014-03-04 07:55:48 -08:00
hugetlb.c
mm: dump page when hitting a VM_BUG_ON using VM_BUG_ON_PAGE
2014-01-23 16:36:50 -08:00
hugetlb_cgroup.c
mm: dump page when hitting a VM_BUG_ON using VM_BUG_ON_PAGE
2014-01-23 16:36:50 -08:00
hwpoison-inject.c
mm/hwpoison: add '#' to hwpoison_inject
2014-01-21 16:19:48 -08:00
init-mm.c
internal.h
mm/page-writeback.c: do not count anon pages as dirtyable memory
2014-01-29 16:22:39 -08:00
interval_tree.c
Kconfig
mm/Kconfig: fix URL for zsmalloc benchmark
2014-03-10 17:26:20 -07:00
Kconfig.debug
kmemcheck.c
kmemleak-test.c
kmemleak.c
mm: kmemleak: avoid false negatives on vmalloc'ed objects
2013-11-13 12:09:07 +09:00
ksm.c
mm: close PageTail race
2014-03-04 07:55:47 -08:00
list_lru.c
mm: list_lru: fix almost infinite loop causing effective livelock
2013-10-30 12:57:46 -07:00
maccess.c
madvise.c
mm/hwpoison: fix traversal of hugetlbfs pages to avoid printk flood
2013-09-30 14:31:02 -07:00
Makefile
zsmalloc: move it under mm
2014-01-30 16:56:55 -08:00
memblock.c
memblock: add limit checking to memblock_virt_alloc
2014-01-29 16:22:40 -08:00
memcontrol.c
memcg: reparent charges of children before processing parent
2014-03-04 07:55:48 -08:00
memory-failure.c
mm: close PageTail race
2014-03-04 07:55:47 -08:00
memory.c
mm, thp: fix infinite loop on memcg OOM
2014-02-25 15:25:44 -08:00
memory_hotplug.c
mm/memory_hotplug.c: move register_memory_resource out of the lock_memory_hotplug
2014-01-23 16:36:52 -08:00
mempolicy.c
mm/mempolicy.c: fix mempolicy printing in numa_maps
2014-01-30 16:56:56 -08:00
mempool.c
mm/mempool.c: convert kmalloc_node(...GFP_ZERO...) to kzalloc_node(...)
2013-09-11 15:58:14 -07:00
migrate.c
mm: fix GFP_THISNODE callers and clarify
2014-03-10 17:26:19 -07:00
mincore.c
mm: do_mincore() cleanup
2014-01-23 16:36:52 -08:00
mlock.c
mm: dump page when hitting a VM_BUG_ON using VM_BUG_ON_PAGE
2014-01-23 16:36:50 -08:00
mm_init.c
mm: bring back /sys/kernel/mm
2014-01-27 21:02:39 -08:00
mmap.c
mm: ignore VM_SOFTDIRTY on VMA merging
2014-01-23 16:36:53 -08:00
mmu_context.c
mm: remove old aio use_mm() comment
2013-05-07 18:38:27 -07:00
mmu_notifier.c
mm: audit/fix non-modular users of module_init in core code
2014-01-23 16:36:52 -08:00
mmzone.c
mm: numa: Change page last {nid,pid} into {cpu,pid}
2013-10-09 14:47:45 +02:00
mprotect.c
mm: Use ptep/pmdp_set_numa() for updating _PAGE_NUMA bit
2014-02-17 11:19:36 +11:00
mremap.c
mm: revert mremap pud_free anti-fix
2013-10-16 21:35:53 -07:00
msync.c
nobootmem.c
mm/nobootmem: free_all_bootmem again
2014-01-23 16:36:52 -08:00
nommu.c
mm: add overcommit_kbytes sysctl variable
2014-01-21 16:19:44 -08:00
oom_kill.c
mm, oom: base root bonus on current usage
2014-01-30 16:56:56 -08:00
page-writeback.c
mm: __set_page_dirty_nobuffers() uses spin_lock_irqsave() instead of spin_lock_irq()
2014-02-06 13:48:51 -08:00
page_alloc.c
mm: page_alloc: exempt GFP_THISNODE allocations from zone fairness
2014-03-04 07:55:50 -08:00
page_cgroup.c
Merge branch 'akpm' (incoming from Andrew)
2014-01-21 19:05:45 -08:00
page_io.c
Merge branch 'for-3.14/core' of git://git.kernel.dk/linux-block
2014-01-30 11:19:05 -08:00
page_isolation.c
mm: memory-hotplug: enable memory hotplug to handle hugepage
2013-09-11 15:57:48 -07:00
pagewalk.c
mm/pagewalk.c: fix walk_page_range() access of wrong PTEs
2013-10-30 14:27:03 -07:00
percpu-km.c
percpu-vm.c
percpu.c
Merge branch 'akpm' (incoming from Andrew)
2014-01-21 19:05:45 -08:00
pgtable-generic.c
mm: fix TLB flush race between migration, and change_protection_range
2013-12-18 19:04:51 -08:00
process_vm_access.c
quicklist.c
readahead.c
mm/readahead.c: fix do_readahead() for no readpage(s)
2014-01-29 16:22:40 -08:00
rmap.c
mm/rmap: fix coccinelle warnings
2014-01-23 16:36:53 -08:00
shmem.c
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
2014-01-28 08:38:04 -08:00
slab.c
mm: Fix warning on make htmldocs caused by slab.c
2014-01-31 13:52:25 +02:00
slab.h
memcg, slab: RCU protect memcg_params for root caches
2014-01-23 16:36:51 -08:00
slab_common.c
slab: fix wrong retval on kmem_cache_create_memcg error path
2014-01-29 16:22:40 -08:00
slob.c
mm/sl[aou]b: Move kmallocXXX functions to common code
2013-09-04 20:51:33 +03:00
slub.c
slub: do not assert not having lock in removing freed partial
2014-02-10 16:01:42 -08:00
sparse-vmemmap.c
mm/sparse: use memblock apis for early memory allocations
2014-01-21 16:19:47 -08:00
sparse.c
mm/sparse: use memblock apis for early memory allocations
2014-01-21 16:19:47 -08:00
swap.c
mm: close PageTail race
2014-03-04 07:55:47 -08:00
swap_state.c
swap: add a simple detector for inappropriate swapin readahead
2014-02-06 13:48:51 -08:00
swapfile.c
mm/swap: fix race on swap_info reuse between swapoff and swapon
2014-02-06 13:48:51 -08:00
truncate.c
truncate: drop 'oldsize' truncate_pagecache() parameter
2013-09-12 15:38:02 -07:00
util.c
mm: add overcommit_kbytes sysctl variable
2014-01-21 16:19:44 -08:00
vmalloc.c
Revert "mm/vmalloc: interchage the implementation of vmalloc_to_{pfn,page}"
2014-01-27 21:02:39 -08:00
vmpressure.c
arm, pm, vmpressure: add missing slab.h includes
2014-02-03 13:24:01 -05:00
vmscan.c
mm/page-writeback.c: do not count anon pages as dirtyable memory
2014-01-29 16:22:39 -08:00
vmstat.c
mm, vmstat: Fix CPU hotplug callback registration
2014-03-20 13:43:48 +01:00
zbud.c
mm/zbud: fix some trivial typos in comments
2013-09-11 15:57:35 -07:00
zsmalloc.c
zsmalloc: Fix CPU hotplug callback registration
2014-03-20 13:43:45 +01:00
zswap.c
mm, zswap: Fix CPU hotplug callback registration
2014-03-20 13:43:48 +01:00