]> git.baikalelectronics.ru Git - kernel.git/commit
slub: use irqsafe_cpu_cmpxchg for put_cpu_partial
authorChristoph Lameter <cl@linux.com>
Wed, 23 Nov 2011 15:14:38 +0000 (09:14 -0600)
committerPekka Enberg <penberg@kernel.org>
Thu, 24 Nov 2011 06:44:14 +0000 (08:44 +0200)
commit076f58c1c325b502021f0dbaaf3dc8e37bf2d6a3
treec2bc80e3b59253f3d4c9e81e608ba59d15a5bf0e
parentfc2f30a83384fce3d14cee90829f1255b0c21fbe
slub: use irqsafe_cpu_cmpxchg for put_cpu_partial

The cmpxchg must be irq safe. The fallback for this_cpu_cmpxchg only
disables preemption which results in per cpu partial page operation
potentially failing on non x86 platforms.

This patch fixes the following problem reported by Christian Kujau:

  I seem to hit it with heavy disk & cpu IO is in progress on this
  PowerBook
  G4. Full dmesg & .config: http://nerdbynature.de/bits/3.2.0-rc1/oops/

  I've enabled some debug options and now it really points to slub.c:2166

    http://nerdbynature.de/bits/3.2.0-rc1/oops/oops4m.jpg

  With debug options enabled I'm currently in the xmon debugger, not sure
  what to make of it yet, I'll try to get something useful out of it :)

Reported-by: Christian Kujau <lists@nerdbynature.de>
Tested-by: Christian Kujau <lists@nerdbynature.de>
Acked-by: Eric Dumazet <eric.dumazet@gmail.com>
Acked-by: David Rientjes <rientjes@google.com>
Signed-off-by: Christoph Lameter <cl@linux.com>
Signed-off-by: Pekka Enberg <penberg@kernel.org>
mm/slub.c