diff options
Diffstat (limited to 'drivers/scsi/aacraid/linit.c')
-rw-r--r-- | drivers/scsi/aacraid/linit.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/drivers/scsi/aacraid/linit.c b/drivers/scsi/aacraid/linit.c index b6dda99f5083..41255f7893d0 100644 --- a/drivers/scsi/aacraid/linit.c +++ b/drivers/scsi/aacraid/linit.c | |||
@@ -849,11 +849,12 @@ static int __devinit aac_probe_one(struct pci_dev *pdev, | |||
849 | 849 | ||
850 | return 0; | 850 | return 0; |
851 | 851 | ||
852 | out_deinit: | 852 | out_deinit: |
853 | kill_proc(aac->thread_pid, SIGKILL, 0); | 853 | kill_proc(aac->thread_pid, SIGKILL, 0); |
854 | wait_for_completion(&aac->aif_completion); | 854 | wait_for_completion(&aac->aif_completion); |
855 | 855 | ||
856 | aac_send_shutdown(aac); | 856 | aac_send_shutdown(aac); |
857 | aac_adapter_disable_int(aac); | ||
857 | fib_map_free(aac); | 858 | fib_map_free(aac); |
858 | pci_free_consistent(aac->pdev, aac->comm_size, aac->comm_addr, aac->comm_phys); | 859 | pci_free_consistent(aac->pdev, aac->comm_size, aac->comm_addr, aac->comm_phys); |
859 | kfree(aac->queues); | 860 | kfree(aac->queues); |
@@ -870,6 +871,13 @@ out_deinit: | |||
870 | return error; | 871 | return error; |
871 | } | 872 | } |
872 | 873 | ||
874 | static void aac_shutdown(struct pci_dev *dev) | ||
875 | { | ||
876 | struct Scsi_Host *shost = pci_get_drvdata(dev); | ||
877 | struct aac_dev *aac = (struct aac_dev *)shost->hostdata; | ||
878 | aac_send_shutdown(aac); | ||
879 | } | ||
880 | |||
873 | static void __devexit aac_remove_one(struct pci_dev *pdev) | 881 | static void __devexit aac_remove_one(struct pci_dev *pdev) |
874 | { | 882 | { |
875 | struct Scsi_Host *shost = pci_get_drvdata(pdev); | 883 | struct Scsi_Host *shost = pci_get_drvdata(pdev); |
@@ -881,6 +889,7 @@ static void __devexit aac_remove_one(struct pci_dev *pdev) | |||
881 | wait_for_completion(&aac->aif_completion); | 889 | wait_for_completion(&aac->aif_completion); |
882 | 890 | ||
883 | aac_send_shutdown(aac); | 891 | aac_send_shutdown(aac); |
892 | aac_adapter_disable_int(aac); | ||
884 | fib_map_free(aac); | 893 | fib_map_free(aac); |
885 | pci_free_consistent(aac->pdev, aac->comm_size, aac->comm_addr, | 894 | pci_free_consistent(aac->pdev, aac->comm_size, aac->comm_addr, |
886 | aac->comm_phys); | 895 | aac->comm_phys); |
@@ -901,6 +910,7 @@ static struct pci_driver aac_pci_driver = { | |||
901 | .id_table = aac_pci_tbl, | 910 | .id_table = aac_pci_tbl, |
902 | .probe = aac_probe_one, | 911 | .probe = aac_probe_one, |
903 | .remove = __devexit_p(aac_remove_one), | 912 | .remove = __devexit_p(aac_remove_one), |
913 | .shutdown = aac_shutdown, | ||
904 | }; | 914 | }; |
905 | 915 | ||
906 | static int __init aac_init(void) | 916 | static int __init aac_init(void) |
@@ -919,6 +929,7 @@ static int __init aac_init(void) | |||
919 | printk(KERN_WARNING | 929 | printk(KERN_WARNING |
920 | "aacraid: unable to register \"aac\" device.\n"); | 930 | "aacraid: unable to register \"aac\" device.\n"); |
921 | } | 931 | } |
932 | |||
922 | return 0; | 933 | return 0; |
923 | } | 934 | } |
924 | 935 | ||