pstore: change mutex locking to spin_locks
authorDon Zickus <dzickus@redhat.com>
Fri, 12 Aug 2011 17:54:51 +0000 (10:54 -0700)
committerTony Luck <tony.luck@intel.com>
Tue, 16 Aug 2011 18:55:58 +0000 (11:55 -0700)
commitabd4d5587be911f63592537284dad78766d97d62
tree50d88b64ded1189d6c816a1f90124a05354914ba
parent6dda9266913ad57e09afc1a10d6473f10c806a63
pstore: change mutex locking to spin_locks

pstore was using mutex locking to protect read/write access to the
backend plug-ins.  This causes problems when pstore is executed in
an NMI context through panic() -> kmsg_dump().

This patch changes the mutex to a spin_lock_irqsave then also checks to
see if we are in an NMI context.  If we are in an NMI and can't get the
lock, just print a message stating that and blow by the locking.

All this is probably a hack around the bigger locking problem but it
solves my current situation of trying to sleep in an NMI context.

Tested by loading the lkdtm module and executing a HARDLOCKUP which
will cause the machine to panic inside the nmi handler.

Signed-off-by: Don Zickus <dzickus@redhat.com>
Acked-by: Matthew Garrett <mjg@redhat.com>
Signed-off-by: Tony Luck <tony.luck@intel.com>
drivers/acpi/apei/erst.c
drivers/firmware/efivars.c
fs/pstore/platform.c
include/linux/pstore.h