• Ethan Zhao's avatar
    PCI: Prevent VPD access for QLogic ISP2722 · ed99f5a0
    Ethan Zhao authored
    commit 0d5370d1 upstream.
    
    QLogic ISP2722-based 16/32Gb Fibre Channel to PCIe Adapter has the VPD
    access issue too, while read the common pci-sysfs access interface shown as
    
     /sys/devices/pci0000:00/0000:00:03.2/0000:0b:00.0/vpd
    
    with simple 'cat' could cause system hang and panic:
    
      Kernel panic - not syncing: An NMI occurred. Depending on your system the reason for the NMI is logged in any one of the following resources:
      1. Integrated Management Log (IML)
      2. OA Syslog
      3. OA Forward Progress Log
      4. iLO Event Log
      CPU: 0 PID: 15070 Comm: udevadm Not tainted 4.1.12
      Hardware name: HP ProLiant DL380 Gen9/ProLiant DL380 Gen9, BIOS P89 12/27/2015
       0000000000000086 000000007f0cdf51 ffff880c4fa05d58 ffffffff817193de
       ffffffffa00b42d8 0000000000000075 ffff880c4fa05dd8 ffffffff81714072
       0000000000000008 ffff880c4fa05de8 ffff880c4fa05d88 000000007f0cdf51
      Call Trace:
       <NMI>  [<ffffffff817193de>] dump_stack+0x63/0x81
       [<ffffffff81714072>] panic+0xd0/0x20e
       [<ffffffffa00b390d>] hpwdt_pretimeout+0xdd/0xe0 [hpwdt]
       [<ffffffff81021fc9>] ? sched_clock+0x9/0x10
       [<ffffffff8101c101>] nmi_handle+0x91/0x170
       [<ffffffff8101c10c>] ? nmi_handle+0x9c/0x170
       [<ffffffff8101c5fe>] io_check_error+0x1e/0xa0
       [<ffffffff8101c719>] default_do_nmi+0x99/0x140
       [<ffffffff8101c8b4>] do_nmi+0xf4/0x170
       [<ffffffff817232c5>] end_repeat_nmi+0x1a/0x1e
       [<ffffffff815d724b>] ? pci_conf1_read+0xeb/0x120
       [<ffffffff815d724b>] ? pci_conf1_read+0xeb/0x120
       [<ffffffff815d724b>] ? pci_conf1_read+0xeb/0x120
       <<EOE>>  [<ffffffff815db4b3>] raw_pci_read+0x23/0x40
       [<ffffffff815db4fc>] pci_read+0x2c/0x30
       [<ffffffff8136f612>] pci_user_read_config_word+0x72/0x110
       [<ffffffff8136f746>] pci_vpd_pci22_wait+0x96/0x130
       [<ffffffff8136ff9b>] pci_vpd_pci22_read+0xdb/0x1a0
       [<ffffffff8136ea30>] pci_read_vpd+0x20/0x30
       [<ffffffff8137d590>] read_vpd_attr+0x30/0x40
       [<ffffffff8128e037>] sysfs_kf_bin_read+0x47/0x70
       [<ffffffff8128d24e>] kernfs_fop_read+0xae/0x180
       [<ffffffff8120dd97>] __vfs_read+0x37/0x100
       [<ffffffff812ba7e4>] ? security_file_permission+0x84/0xa0
       [<ffffffff8120e366>] ? rw_verify_area+0x56/0xe0
       [<ffffffff8120e476>] vfs_read+0x86/0x140
       [<ffffffff8120f3f5>] SyS_read+0x55/0xd0
       [<ffffffff81720f2e>] system_call_fastpath+0x12/0x71
      Shutting down cpus with NMI
      Kernel Offset: disabled
      drm_kms_helper: panic occurred, switching back to text console
    
    So blacklist the access to its VPD.
    Signed-off-by: default avatarEthan Zhao <ethan.zhao@oracle.com>
    Signed-off-by: default avatarBjorn Helgaas <bhelgaas@google.com>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    ed99f5a0
quirks.c 161 KB