diff options
author | Andrew Patterson <andrew.patterson@hp.com> | 2010-01-22 21:06:53 (GMT) |
---|---|---|
committer | Jesse Barnes <jbarnes@virtuousgeek.org> | 2010-01-25 18:42:52 (GMT) |
commit | bd1f46deba615971a58193afd0202878cadf19a7 (patch) | |
tree | 1a197e82ad0f6314f0ff0507c04030aaad933c7c /arch/x86/pci/intel_bus.c | |
parent | 61c39bb354a1f791ba6f562b766a72e508a036ee (diff) | |
download | linux-bd1f46deba615971a58193afd0202878cadf19a7.tar.xz |
PCI: fix nested spinlock hang in aer_inject
The aer_inject module hangs in aer_inject() when checking the device's
error masks. The hang is due to a recursive use of the aer_inject lock.
The aer_inject() routine grabs the lock while processing the error and then
calls pci_read_config_dword to read the masks. The pci_read_config_dword
routine is earlier overridden by pci_read_aer, which among other things,
grabs the aer_inject lock.
Fixed by moving the pci_read_config_dword calls to read the masks to before
the lock is taken.
Acked-by: Huang Ying <ying.huang@intel.com>
Signed-off-by: Andrew Patterson <andrew.patterson@hp.com>
Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
Diffstat (limited to 'arch/x86/pci/intel_bus.c')
0 files changed, 0 insertions, 0 deletions