]> git.proxmox.com Git - mirror_ubuntu-zesty-kernel.git/commitdiff
PCI/AER: Fix aer_inject error codes
authorJean Delvare <jdelvare@suse.de>
Thu, 18 Feb 2016 12:50:45 +0000 (13:50 +0100)
committerBjorn Helgaas <bhelgaas@google.com>
Tue, 8 Mar 2016 21:48:56 +0000 (15:48 -0600)
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: Borislav Petkov <bp@suse.de>
Signed-off-by: Jean Delvare <jdelvare@suse.de>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
CC: Borislav Petkov <bp@suse.de>
CC: Prarit Bhargava <prarit@redhat.com>
drivers/pci/pcie/aer/aer_inject.c

index e2760a39a98ad1f9524bf4ca5b6445c2ee732840..90bc3a6848a1f7263f13f5c5766c91e5e654b322 100644 (file)
@@ -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);
        if (!pos_cap_err) {
-               ret = -EPERM;
+               ret = -EPROTONOSUPPORT;
                goto out_put;
        }
        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)
 
        rp_pos_cap_err = pci_find_ext_capability(rpdev, PCI_EXT_CAP_ID_ERR);
        if (!rp_pos_cap_err) {
-               ret = -EPERM;
+               ret = -EPROTONOSUPPORT;
                goto out_put;
        }
 
@@ -481,12 +481,12 @@ static int aer_inject(struct aer_error_inj *einj)
        if (find_aer_device(rpdev, &edev)) {
                if (!get_service_data(edev)) {
                        printk(KERN_WARNING "AER service is not initialized\n");
-                       ret = -EINVAL;
+                       ret = -EPROTONOSUPPORT;
                        goto out_put;
                }
                aer_irq(-1, edev);
        } else
-               ret = -EINVAL;
+               ret = -ENODEV;
 out_put:
        kfree(err_alloc);
        kfree(rperr_alloc);