From: Linus Torvalds Date: Thu, 21 Feb 2013 17:38:18 +0000 (-0800) Subject: Merge tag 'please-pull-pstore' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl... X-Git-Tag: v3.9-rc1~130 X-Git-Url: https://openfabrics.org/gitweb/?a=commitdiff_plain;h=024e4ec1856d57bb78c06ec903d29dcf716f5f47;p=~emulex%2Finfiniband.git Merge tag 'please-pull-pstore' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux Pull pstore patches from Tony Luck: "A few fixes to reduce places where pstore might hang a system in the crash path. Plus a new mountpoint (/sys/fs/pstore ... makes more sense then /dev/pstore)." Fix up trivial conflict in drivers/firmware/efivars.c * tag 'please-pull-pstore' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux: pstore: Create a convenient mount point for pstore efi_pstore: Introducing workqueue updating sysfs efivars: Disable external interrupt while holding efivars->lock efi_pstore: Avoid deadlock in non-blocking paths pstore: Avoid deadlock in panic and emergency-restart path --- 024e4ec1856d57bb78c06ec903d29dcf716f5f47 diff --cc drivers/firmware/efivars.c index f5596db0cf5,69225115304..fed08b66171 --- a/drivers/firmware/efivars.c +++ b/drivers/firmware/efivars.c @@@ -790,10 -798,9 +798,10 @@@ static ssize_t efivarfs_file_write(stru } else if (status == EFI_NOT_FOUND) { list_del(&var->list); - spin_unlock(&efivars->lock); + spin_unlock_irq(&efivars->lock); efivar_unregister(var); drop_nlink(inode); + d_delete(file->f_dentry); dput(file->f_dentry); } else { @@@ -993,9 -1000,9 +1001,9 @@@ static int efivarfs_unlink(struct inod if (status == EFI_SUCCESS || status == EFI_NOT_FOUND) { list_del(&var->list); - spin_unlock(&efivars->lock); + spin_unlock_irq(&efivars->lock); efivar_unregister(var); - drop_nlink(dir); + drop_nlink(dentry->d_inode); dput(dentry); return 0; } @@@ -1823,7 -1906,9 +1907,9 @@@ err_put static void __exit efivars_exit(void) { + cancel_work_sync(&efivar_work); + - if (efi_enabled) { + if (efi_enabled(EFI_RUNTIME_SERVICES)) { unregister_efivars(&__efivars); kobject_put(efi_kobj); }