aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/mpt2sas/mpt2sas_base.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/scsi/mpt2sas/mpt2sas_base.c')
-rw-r--r--drivers/scsi/mpt2sas/mpt2sas_base.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/drivers/scsi/mpt2sas/mpt2sas_base.c b/drivers/scsi/mpt2sas/mpt2sas_base.c
index 3774b0742b2b..bb8acf781690 100644
--- a/drivers/scsi/mpt2sas/mpt2sas_base.c
+++ b/drivers/scsi/mpt2sas/mpt2sas_base.c
@@ -3468,6 +3468,12 @@ _base_make_ioc_operational(struct MPT2SAS_ADAPTER *ioc, int sleep_flag)
3468 kfree(delayed_tr); 3468 kfree(delayed_tr);
3469 } 3469 }
3470 3470
3471 list_for_each_entry_safe(delayed_tr, delayed_tr_next,
3472 &ioc->delayed_tr_volume_list, list) {
3473 list_del(&delayed_tr->list);
3474 kfree(delayed_tr);
3475 }
3476
3471 /* initialize the scsi lookup free list */ 3477 /* initialize the scsi lookup free list */
3472 spin_lock_irqsave(&ioc->scsi_lookup_lock, flags); 3478 spin_lock_irqsave(&ioc->scsi_lookup_lock, flags);
3473 INIT_LIST_HEAD(&ioc->free_list); 3479 INIT_LIST_HEAD(&ioc->free_list);
@@ -3622,6 +3628,15 @@ mpt2sas_base_attach(struct MPT2SAS_ADAPTER *ioc)
3622 3628
3623 init_waitqueue_head(&ioc->reset_wq); 3629 init_waitqueue_head(&ioc->reset_wq);
3624 3630
3631 /* allocate memory pd handle bitmask list */
3632 ioc->pd_handles_sz = (ioc->facts.MaxDevHandle / 8);
3633 if (ioc->facts.MaxDevHandle % 8)
3634 ioc->pd_handles_sz++;
3635 ioc->pd_handles = kzalloc(ioc->pd_handles_sz,
3636 GFP_KERNEL);
3637 if (!ioc->pd_handles)
3638 goto out_free_resources;
3639
3625 ioc->fwfault_debug = mpt2sas_fwfault_debug; 3640 ioc->fwfault_debug = mpt2sas_fwfault_debug;
3626 3641
3627 /* base internal command bits */ 3642 /* base internal command bits */
@@ -3691,6 +3706,7 @@ mpt2sas_base_attach(struct MPT2SAS_ADAPTER *ioc)
3691 mpt2sas_base_free_resources(ioc); 3706 mpt2sas_base_free_resources(ioc);
3692 _base_release_memory_pools(ioc); 3707 _base_release_memory_pools(ioc);
3693 pci_set_drvdata(ioc->pdev, NULL); 3708 pci_set_drvdata(ioc->pdev, NULL);
3709 kfree(ioc->pd_handles);
3694 kfree(ioc->tm_cmds.reply); 3710 kfree(ioc->tm_cmds.reply);
3695 kfree(ioc->transport_cmds.reply); 3711 kfree(ioc->transport_cmds.reply);
3696 kfree(ioc->scsih_cmds.reply); 3712 kfree(ioc->scsih_cmds.reply);
@@ -3726,6 +3742,7 @@ mpt2sas_base_detach(struct MPT2SAS_ADAPTER *ioc)
3726 mpt2sas_base_free_resources(ioc); 3742 mpt2sas_base_free_resources(ioc);
3727 _base_release_memory_pools(ioc); 3743 _base_release_memory_pools(ioc);
3728 pci_set_drvdata(ioc->pdev, NULL); 3744 pci_set_drvdata(ioc->pdev, NULL);
3745 kfree(ioc->pd_handles);
3729 kfree(ioc->pfacts); 3746 kfree(ioc->pfacts);
3730 kfree(ioc->ctl_cmds.reply); 3747 kfree(ioc->ctl_cmds.reply);
3731 kfree(ioc->base_cmds.reply); 3748 kfree(ioc->base_cmds.reply);