PCI: Report pci_pme_active() kmalloc failure
authorBjorn Helgaas <bhelgaas@google.com>
Wed, 16 Oct 2013 18:32:53 +0000 (12:32 -0600)
committerBjorn Helgaas <bhelgaas@google.com>
Tue, 29 Oct 2013 22:57:04 +0000 (16:57 -0600)
Previously, if kmalloc() failed, we claimed "PME# enabled" in dmesg,
even though we didn't add the device to the pci_pme_list.  This prints
a more correct warning.

Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Acked-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
drivers/pci/pci.c

index ad7fc72a40a0ced8554b9be8d4617686ece41f3b..36cc8d5ae8b2047de37753b88dca62f6d73e1c17 100644 (file)
@@ -1638,8 +1638,10 @@ void pci_pme_active(struct pci_dev *dev, bool enable)
                if (enable) {
                        pme_dev = kmalloc(sizeof(struct pci_pme_device),
                                          GFP_KERNEL);
-                       if (!pme_dev)
-                               goto out;
+                       if (!pme_dev) {
+                               dev_warn(&dev->dev, "can't enable PME#\n");
+                               return;
+                       }
                        pme_dev->dev = dev;
                        mutex_lock(&pci_pme_list_mutex);
                        list_add(&pme_dev->list, &pci_pme_list);
@@ -1660,7 +1662,6 @@ void pci_pme_active(struct pci_dev *dev, bool enable)
                }
        }
 
-out:
        dev_dbg(&dev->dev, "PME# %s\n", enable ? "enabled" : "disabled");
 }