Commit 20ac75e5 authored by Jean Delvare's avatar Jean Delvare Committed by Bjorn Helgaas

PCI/AER: Fix aer_inject error codes

EPERM means "Operation not permitted", which doesn't reflect the lack of
support for AER.  EPROTONOSUPPORT (Protocol not supported) is a better
choice of error code if the device or its root port lack support for AER.

Likewise, EINVAL means "Invalid argument", which is not suitable for cases
where the AER error device is missing or unusable.  ENODEV and
EPROTONOSUPPORT, respectively, fit better.
Suggested-by: default avatarBorislav Petkov <bp@suse.de>
Signed-off-by: default avatarJean Delvare <jdelvare@suse.de>
Signed-off-by: default avatarBjorn Helgaas <bhelgaas@google.com>
CC: Borislav Petkov <bp@suse.de>
CC: Prarit Bhargava <prarit@redhat.com>
parent 0e6053dc
...@@ -363,7 +363,7 @@ static int aer_inject(struct aer_error_inj *einj) ...@@ -363,7 +363,7 @@ static int aer_inject(struct aer_error_inj *einj)
pos_cap_err = pci_find_ext_capability(dev, PCI_EXT_CAP_ID_ERR); pos_cap_err = pci_find_ext_capability(dev, PCI_EXT_CAP_ID_ERR);
if (!pos_cap_err) { if (!pos_cap_err) {
ret = -EPERM; ret = -EPROTONOSUPPORT;
goto out_put; goto out_put;
} }
pci_read_config_dword(dev, pos_cap_err + PCI_ERR_UNCOR_SEVER, &sever); pci_read_config_dword(dev, pos_cap_err + PCI_ERR_UNCOR_SEVER, &sever);
...@@ -373,7 +373,7 @@ static int aer_inject(struct aer_error_inj *einj) ...@@ -373,7 +373,7 @@ static int aer_inject(struct aer_error_inj *einj)
rp_pos_cap_err = pci_find_ext_capability(rpdev, PCI_EXT_CAP_ID_ERR); rp_pos_cap_err = pci_find_ext_capability(rpdev, PCI_EXT_CAP_ID_ERR);
if (!rp_pos_cap_err) { if (!rp_pos_cap_err) {
ret = -EPERM; ret = -EPROTONOSUPPORT;
goto out_put; goto out_put;
} }
...@@ -481,12 +481,12 @@ static int aer_inject(struct aer_error_inj *einj) ...@@ -481,12 +481,12 @@ static int aer_inject(struct aer_error_inj *einj)
if (find_aer_device(rpdev, &edev)) { if (find_aer_device(rpdev, &edev)) {
if (!get_service_data(edev)) { if (!get_service_data(edev)) {
printk(KERN_WARNING "AER service is not initialized\n"); printk(KERN_WARNING "AER service is not initialized\n");
ret = -EINVAL; ret = -EPROTONOSUPPORT;
goto out_put; goto out_put;
} }
aer_irq(-1, edev); aer_irq(-1, edev);
} else } else
ret = -EINVAL; ret = -ENODEV;
out_put: out_put:
kfree(err_alloc); kfree(err_alloc);
kfree(rperr_alloc); kfree(rperr_alloc);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment