hpsa: skip free_irq calls if irqs are not allocated
authorRobert Elliott <elliott@hp.com>
Thu, 23 Apr 2015 14:34:37 +0000 (09:34 -0500)
committerJames Bottomley <JBottomley@Odin.com>
Sun, 31 May 2015 18:40:12 +0000 (11:40 -0700)
If try_soft_reset fails to re-allocate irqs, the error exit
starts with free_irq calls, which generate kernel WARN
messages since they were already freed a few lines earlier.

Jump to the next exit label to skip the free_irq calls.

Reviewed-by: Scott Teel <scott.teel@pmcs.com>
Reviewed-by: Kevin Barnett <kevin.barnett@pmcs.com>
Reviewed-by: Tomas Henzl <thenzl@redhat.com>
Reviewed-by: Hannes Reinecke <hare@Suse.de>
Signed-off-by: Robert Elliott <elliott@hp.com>
Signed-off-by: Don Brace <don.brace@pmcs.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: James Bottomley <JBottomley@Odin.com>
drivers/scsi/hpsa.c

index 5007490cdf3a450651adc6cd304ac3860063906b..e029df7b5b98254b33474572c9af8738a4a9f3cb 100644 (file)
@@ -7759,7 +7759,12 @@ reinit_after_soft_reset:
                if (rc) {
                        dev_warn(&h->pdev->dev,
                                "Failed to request_irq after soft reset.\n");
-                       goto clean4;
+                       /*
+                        * clean4 starts with free_irqs, but that was just
+                        * done. Then, request_irqs_failed, so there is
+                        * nothing to free. So, goto the next label.
+                        */
+                       goto clean3;
                }
 
                rc = hpsa_kdump_soft_reset(h);