mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-24 17:59:32 +00:00
net: hns3: add a check to pointer in error_detected and slot_reset
If we add a VF without loading hclgevf.ko and then there is a RAS error occurs, PCIe AER will call error_detected and slot_reset of all functions, and will get a NULL pointer when we check ad_dev->ops->handle_hw_ras_error. This will cause a call trace and failures on handling of follow-up RAS errors. This patch check ae_dev and ad_dev->ops at first to solve above issues. Signed-off-by: Weihang Li <liweihang@hisilicon.com> Signed-off-by: Peng Li <lipeng321@huawei.com> Signed-off-by: Huazhong Tan <tanhuazhong@huawei.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
d9ea156297
commit
661262bc3e
1 changed files with 5 additions and 2 deletions
|
@ -1920,9 +1920,9 @@ static pci_ers_result_t hns3_error_detected(struct pci_dev *pdev,
|
|||
if (state == pci_channel_io_perm_failure)
|
||||
return PCI_ERS_RESULT_DISCONNECT;
|
||||
|
||||
if (!ae_dev) {
|
||||
if (!ae_dev || !ae_dev->ops) {
|
||||
dev_err(&pdev->dev,
|
||||
"Can't recover - error happened during device init\n");
|
||||
"Can't recover - error happened before device initialized\n");
|
||||
return PCI_ERS_RESULT_NONE;
|
||||
}
|
||||
|
||||
|
@ -1941,6 +1941,9 @@ static pci_ers_result_t hns3_slot_reset(struct pci_dev *pdev)
|
|||
|
||||
dev_info(dev, "requesting reset due to PCI error\n");
|
||||
|
||||
if (!ae_dev || !ae_dev->ops)
|
||||
return PCI_ERS_RESULT_NONE;
|
||||
|
||||
/* request the reset */
|
||||
if (ae_dev->ops->reset_event) {
|
||||
if (!ae_dev->override_pci_need_reset)
|
||||
|
|
Loading…
Reference in a new issue