diff options
Diffstat (limited to 'drivers/pci/hotplug/pciehp_hpc.c')
| -rw-r--r-- | drivers/pci/hotplug/pciehp_hpc.c | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/drivers/pci/hotplug/pciehp_hpc.c b/drivers/pci/hotplug/pciehp_hpc.c index 71a8012886b0..7a16c6897bb9 100644 --- a/drivers/pci/hotplug/pciehp_hpc.c +++ b/drivers/pci/hotplug/pciehp_hpc.c | |||
| @@ -934,7 +934,7 @@ static void pcie_disable_notification(struct controller *ctrl) | |||
| 934 | ctrl_warn(ctrl, "Cannot disable software notification\n"); | 934 | ctrl_warn(ctrl, "Cannot disable software notification\n"); |
| 935 | } | 935 | } |
| 936 | 936 | ||
| 937 | static int pcie_init_notification(struct controller *ctrl) | 937 | int pcie_init_notification(struct controller *ctrl) |
| 938 | { | 938 | { |
| 939 | if (pciehp_request_irq(ctrl)) | 939 | if (pciehp_request_irq(ctrl)) |
| 940 | return -1; | 940 | return -1; |
| @@ -942,13 +942,17 @@ static int pcie_init_notification(struct controller *ctrl) | |||
| 942 | pciehp_free_irq(ctrl); | 942 | pciehp_free_irq(ctrl); |
| 943 | return -1; | 943 | return -1; |
| 944 | } | 944 | } |
| 945 | ctrl->notification_enabled = 1; | ||
| 945 | return 0; | 946 | return 0; |
| 946 | } | 947 | } |
| 947 | 948 | ||
| 948 | static void pcie_shutdown_notification(struct controller *ctrl) | 949 | static void pcie_shutdown_notification(struct controller *ctrl) |
| 949 | { | 950 | { |
| 950 | pcie_disable_notification(ctrl); | 951 | if (ctrl->notification_enabled) { |
| 951 | pciehp_free_irq(ctrl); | 952 | pcie_disable_notification(ctrl); |
| 953 | pciehp_free_irq(ctrl); | ||
| 954 | ctrl->notification_enabled = 0; | ||
| 955 | } | ||
| 952 | } | 956 | } |
| 953 | 957 | ||
| 954 | static int pcie_init_slot(struct controller *ctrl) | 958 | static int pcie_init_slot(struct controller *ctrl) |
| @@ -1110,13 +1114,8 @@ struct controller *pcie_init(struct pcie_device *dev) | |||
| 1110 | if (pcie_init_slot(ctrl)) | 1114 | if (pcie_init_slot(ctrl)) |
| 1111 | goto abort_ctrl; | 1115 | goto abort_ctrl; |
| 1112 | 1116 | ||
| 1113 | if (pcie_init_notification(ctrl)) | ||
| 1114 | goto abort_slot; | ||
| 1115 | |||
| 1116 | return ctrl; | 1117 | return ctrl; |
| 1117 | 1118 | ||
| 1118 | abort_slot: | ||
| 1119 | pcie_cleanup_slot(ctrl); | ||
| 1120 | abort_ctrl: | 1119 | abort_ctrl: |
| 1121 | kfree(ctrl); | 1120 | kfree(ctrl); |
| 1122 | abort: | 1121 | abort: |
