diff options
Diffstat (limited to 'drivers/scsi/pm8001/pm8001_init.c')
| -rw-r--r-- | drivers/scsi/pm8001/pm8001_init.c | 10 | 
1 files changed, 4 insertions, 6 deletions
| diff --git a/drivers/scsi/pm8001/pm8001_init.c b/drivers/scsi/pm8001/pm8001_init.c index bed8cc125544..d8a2121cb8d9 100644 --- a/drivers/scsi/pm8001/pm8001_init.c +++ b/drivers/scsi/pm8001/pm8001_init.c @@ -179,7 +179,7 @@ static void pm8001_free(struct pm8001_hba_info *pm8001_ha)  	}  	PM8001_CHIP_DISP->chip_iounmap(pm8001_ha);  	flush_workqueue(pm8001_wq); -	kfree(pm8001_ha->tags); +	bitmap_free(pm8001_ha->tags);  	kfree(pm8001_ha);  } @@ -282,12 +282,12 @@ static int pm8001_alloc(struct pm8001_hba_info *pm8001_ha,  	if (rc) {  		pm8001_dbg(pm8001_ha, FAIL,  			   "pm8001_setup_irq failed [ret: %d]\n", rc); -		goto err_out_shost; +		goto err_out;  	}  	/* Request Interrupt */  	rc = pm8001_request_irq(pm8001_ha);  	if (rc) -		goto err_out_shost; +		goto err_out;  	count = pm8001_ha->max_q_num;  	/* Queues are chosen based on the number of cores/msix availability */ @@ -423,8 +423,6 @@ static int pm8001_alloc(struct pm8001_hba_info *pm8001_ha,  	pm8001_tag_init(pm8001_ha);  	return 0; -err_out_shost: -	scsi_remove_host(pm8001_ha->shost);  err_out_nodev:  	for (i = 0; i < pm8001_ha->max_memcnt; i++) {  		if (pm8001_ha->memoryMap.region[i].virt_ptr != NULL) { @@ -1194,7 +1192,7 @@ pm8001_init_ccb_tag(struct pm8001_hba_info *pm8001_ha, struct Scsi_Host *shost,  	can_queue = ccb_count - PM8001_RESERVE_SLOT;  	shost->can_queue = can_queue; -	pm8001_ha->tags = kzalloc(ccb_count, GFP_KERNEL); +	pm8001_ha->tags = bitmap_zalloc(ccb_count, GFP_KERNEL);  	if (!pm8001_ha->tags)  		goto err_out; |