Backport slub allocator bug fix from 7d557b3

Previously, it was possible for the boot_kmem_cache{,_node} to enter
the per-CPU slab cache and hence for pages to be allocated from these
caches.  However, these caches are marked __initdata, so they get
freed after early boot, even though the pages allocated from them may
still refer to these caches via their struct page->slab_cache field.
This was causing intermittent GPFs in mtrace_kmem_alloc when it
attempted to access the name field of one of these boot caches.

This was fixed by commit 7d557b3 and released in kernel v3.10.  The
original commit is below:

slub: correctly bootstrap boot caches

After we create a boot cache, we may allocate from it until it is bootstraped.
This will move the page from the partial list to the cpu slab list. If this
happens, the loop:

	list_for_each_entry(p, &n->partial, lru)

that we use to scan for all partial pages will yield nothing, and the pages
will keep pointing to the boot cpu cache, which is of course, invalid. To do
that, we should flush the cache to make sure that the cpu slab is back to the
partial list.

Signed-off-by: Glauber Costa <glommer@parallels.com>
Reported-by:  Steffen Michalke <StMichalke@web.de>
Tested-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Acked-by: Christoph Lameter <cl@linux.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Tejun Heo <tj@kernel.org>
Signed-off-by: Pekka Enberg <penberg@kernel.org>