Subject: + mm-slub-list_lock-may-not-be-held-in-some-circumstances.patch added to -mm tree To: rientjes@xxxxxxxxxx,Larry.Finger@xxxxxxxxxxxx,cl@xxxxxxxxx,paulmck@xxxxxxxxxxxxxxxxxx,penberg@xxxxxxxxxx From: akpm@xxxxxxxxxxxxxxxxxxxx Date: Mon, 03 Feb 2014 15:54:42 -0800 The patch titled Subject: mm/slub.c: list_lock may not be held in some circumstances has been added to the -mm tree. Its filename is mm-slub-list_lock-may-not-be-held-in-some-circumstances.patch This patch should soon appear at http://ozlabs.org/~akpm/mmots/broken-out/mm-slub-list_lock-may-not-be-held-in-some-circumstances.patch and later at http://ozlabs.org/~akpm/mmotm/broken-out/mm-slub-list_lock-may-not-be-held-in-some-circumstances.patch Before you just go and hit "reply", please: a) Consider who else should be cc'ed b) Prefer to cc a suitable mailing list as well c) Ideally: find the original patch on the mailing list and do a reply-to-all to that, adding suitable additional cc's *** Remember to use Documentation/SubmitChecklist when testing your code *** The -mm tree is included into linux-next and is updated there every 3-4 working days ------------------------------------------------------ From: David Rientjes <rientjes@xxxxxxxxxx> Subject: mm/slub.c: list_lock may not be held in some circumstances Commit c65c1877bd68 ("slub: use lockdep_assert_held") incorrectly required that add_full() and remove_full() hold n->list_lock. The lock is only taken when kmem_cache_debug(s), since that's the only time it actually does anything. Require that the lock only be taken under such a condition. Reported-by: Larry Finger <Larry.Finger@xxxxxxxxxxxx> Tested-by: Larry Finger <Larry.Finger@xxxxxxxxxxxx> Tested-by: Paul E. McKenney <paulmck@xxxxxxxxxxxxxxxxxx> Acked-by: Christoph Lameter <cl@xxxxxxxxx> Cc: Pekka Enberg <penberg@xxxxxxxxxx> Signed-off-by: David Rientjes <rientjes@xxxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- mm/slub.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff -puN mm/slub.c~mm-slub-list_lock-may-not-be-held-in-some-circumstances mm/slub.c --- a/mm/slub.c~mm-slub-list_lock-may-not-be-held-in-some-circumstances +++ a/mm/slub.c @@ -1004,21 +1004,19 @@ static inline void slab_free_hook(struct static void add_full(struct kmem_cache *s, struct kmem_cache_node *n, struct page *page) { - lockdep_assert_held(&n->list_lock); - if (!(s->flags & SLAB_STORE_USER)) return; + lockdep_assert_held(&n->list_lock); list_add(&page->lru, &n->full); } static void remove_full(struct kmem_cache *s, struct kmem_cache_node *n, struct page *page) { - lockdep_assert_held(&n->list_lock); - if (!(s->flags & SLAB_STORE_USER)) return; + lockdep_assert_held(&n->list_lock); list_del(&page->lru); } _ Patches currently in -mm which might be from rientjes@xxxxxxxxxx are documentation-kernel-parameterstxt-fix-memmap=-language.patch mm-__set_page_dirty_nobuffers-uses-spin_lock_irqseve-instead-of-spin_lock_irq.patch mm-slub-list_lock-may-not-be-held-in-some-circumstances.patch numa-mem-hotplug-initialize-numa_kernel_nodes-in-numa_clear_kernel_node_hotplug.patch numa-mem-hotplug-initialize-numa_kernel_nodes-in-numa_clear_kernel_node_hotplug-fix.patch numa-mem-hotplug-fix-array-index-overflow-when-synchronizing-nid-to-memblockreserved.patch kthread-ensure-locality-of-task_struct-allocations.patch mm-compaction-ignore-pageblock-skip-when-manually-invoking-compaction.patch mm-compaction-avoid-isolating-pinned-pages.patch mm-vmscan-shrink_slab-rename-max_pass-freeable.patch mm-utilc-add-kstrimdup.patch cpusets-allocate-heap-only-when-required.patch linux-next.patch -- To unsubscribe from this list: send the line "unsubscribe mm-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html