This is the drivers/scsi/ part of the big kfree cleanup patch.
Remove pointless checks for NULL prior to calling kfree() in drivers/scsi/.
Signed-off-by: Jesper Juhl <jesper.juhl@gmail.com>
Cc: James Bottomley <James.Bottomley@steeleye.com>
Acked-by: Kai Makisara <kai.makisara@kolumbus.fi>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
                                    tw_dev->generic_buffer_virt[0],
                                    tw_dev->generic_buffer_phys[0]);
 
-       if (tw_dev->event_queue[0])
-               kfree(tw_dev->event_queue[0]);
+       kfree(tw_dev->event_queue[0]);
 } /* End twa_free_device_extension() */
 
 /* This function will free a request id */
 
                                                kfree(hw_fib_pool);
                                                hw_fib_pool = NULL;
                                        }
-                               } else if (hw_fib_pool) {
+                               } else {
                                        kfree(hw_fib_pool);
                                        hw_fib_pool = NULL;
                                }
                                hw_fib_p = hw_fib_pool;
                                fib_p = fib_pool;
                                while (hw_fib_p < &hw_fib_pool[num]) {
-                                       if (*hw_fib_p)
-                                               kfree(*hw_fib_p);
-                                       if (*fib_p)
-                                               kfree(*fib_p);
+                                       kfree(*hw_fib_p);
+                                       kfree(*fib_p);
                                        ++fib_p;
                                        ++hw_fib_p;
                                }
-                               if (hw_fib_pool)
-                                       kfree(hw_fib_pool);
-                               if (fib_pool)
-                                       kfree(fib_pool);
+                               kfree(hw_fib_pool);
+                               kfree(fib_pool);
                        }
                        kfree(fib);
                        spin_lock_irqsave(dev->queues->queue[HostNormCmdQueue].lock, flags);
 
                 release_region(shp->io_port, boardp->asc_n_io_port);
                 if (ASC_WIDE_BOARD(boardp)) {
                     iounmap(boardp->ioremap_addr);
-                    if (boardp->orig_carrp) {
-                        kfree(boardp->orig_carrp);
-                        boardp->orig_carrp = NULL;
-                    }
+                    kfree(boardp->orig_carrp);
+                    boardp->orig_carrp = NULL;
                     if (boardp->orig_reqp) {
                         kfree(boardp->orig_reqp);
                         boardp->orig_reqp = boardp->adv_reqp = NULL;
         adv_sgblk_t    *sgp = NULL;
 
         iounmap(boardp->ioremap_addr);
-        if (boardp->orig_carrp) {
-            kfree(boardp->orig_carrp);
-            boardp->orig_carrp = NULL;
-        }
+        kfree(boardp->orig_carrp);
+        boardp->orig_carrp = NULL;
         if (boardp->orig_reqp) {
             kfree(boardp->orig_reqp);
             boardp->orig_reqp = boardp->adv_reqp = NULL;
 
                        return;
                }
                my_done = SCtmp->scsi_done;
-               if (SCtmp->host_scribble) {
-                       kfree(SCtmp->host_scribble);
-                       SCtmp->host_scribble = NULL;
-               }
+               kfree(SCtmp->host_scribble);
+               SCtmp->host_scribble = NULL;
                /* Fetch the sense data, and tuck it away, in the required slot.  The
                   Adaptec automatically fetches it, and there is no guarantee that
                   we will still have it in the cdb when we come back */
                    HOSTDATA(SCpnt->host)->SCint[i]->target == SCpnt->target) {
                        Scsi_Cmnd *SCtmp;
                        SCtmp = HOSTDATA(SCpnt->host)->SCint[i];
-                       if (SCtmp->host_scribble) {
-                               kfree(SCtmp->host_scribble);
-                               SCtmp->host_scribble = NULL;
-                       }
+                       kfree(SCtmp->host_scribble);
+                       SCtmp->host_scribble = NULL;
                        HOSTDATA(SCpnt->host)->SCint[i] = NULL;
                        HOSTDATA(SCpnt->host)->mb[i].status = 0;
                }
                                 */
                                continue;
                        }
-                       if (SCtmp->host_scribble) {
-                               kfree(SCtmp->host_scribble);
-                               SCtmp->host_scribble = NULL;
-                       }
+                       kfree(SCtmp->host_scribble);
+                       SCtmp->host_scribble = NULL;
                        HOSTDATA(SCpnt->device->host)->SCint[i] = NULL;
                        HOSTDATA(SCpnt->device->host)->mb[i].status = 0;
                }
                                 */
                                continue;
                        }
-                       if (SCtmp->host_scribble) {
-                               kfree(SCtmp->host_scribble);
-                               SCtmp->host_scribble = NULL;
-                       }
+                       kfree(SCtmp->host_scribble);
+                       SCtmp->host_scribble = NULL;
                        HOSTDATA(SCpnt->device->host)->SCint[i] = NULL;
                        HOSTDATA(SCpnt->device->host)->mb[i].status = 0;
                }
                                Scsi_Cmnd *SCtmp;
                                SCtmp = HOSTDATA(SCpnt->host)->SCint[i];
                                SCtmp->result = DID_RESET << 16;
-                               if (SCtmp->host_scribble) {
-                                       kfree(SCtmp->host_scribble);
-                                       SCtmp->host_scribble = NULL;
-                               }
+                               kfree(SCtmp->host_scribble);
+                               SCtmp->host_scribble = NULL;
                                printk(KERN_WARNING "Sending DID_RESET for target %d\n", SCpnt->target);
                                SCtmp->scsi_done(SCpnt);
 
                                                Scsi_Cmnd *SCtmp;
                                                SCtmp = HOSTDATA(SCpnt->host)->SCint[i];
                                                SCtmp->result = DID_RESET << 16;
-                                               if (SCtmp->host_scribble) {
-                                                       kfree(SCtmp->host_scribble);
-                                                       SCtmp->host_scribble = NULL;
-                                               }
+                                               kfree(SCtmp->host_scribble);
+                                               SCtmp->host_scribble = NULL;
                                                printk(KERN_WARNING "Sending DID_RESET for target %d\n", SCpnt->target);
                                                SCtmp->scsi_done(SCpnt);
 
 
                                      - scb_dma->dma_offset),
                            scb_dma->dma_address);
       }
-      if (p->scb_data->scb_array[i]->kmalloc_ptr != NULL)
-        kfree(p->scb_data->scb_array[i]->kmalloc_ptr);
+      kfree(p->scb_data->scb_array[i]->kmalloc_ptr);
       p->scb_data->scb_array[i] = NULL;
     }
   
 
 {
        if (!list_empty(&queue->head))
                printk(KERN_WARNING "freeing non-empty queue %p\n", queue);
-       if (queue->alloc)
-               kfree(queue->alloc);
+       kfree(queue->alloc);
 }
      
 
 
        const unsigned srbs_per_page = PAGE_SIZE/SEGMENTX_LEN;
 
        for (i = 0; i < DC395x_MAX_SRB_CNT; i += srbs_per_page)
-               if (acb->srb_array[i].segment_x)
-                       kfree(acb->srb_array[i].segment_x);
+               kfree(acb->srb_array[i].segment_x);
 }
 
 
 
        if(pHba->msg_addr_virt != pHba->base_addr_virt){
                iounmap(pHba->msg_addr_virt);
        }
-       if(pHba->hrt) {
-               kfree(pHba->hrt);
-       }
-       if(pHba->lct){
-               kfree(pHba->lct);
-       }
-       if(pHba->status_block) {
-               kfree(pHba->status_block);
-       }
-       if(pHba->reply_pool){
-               kfree(pHba->reply_pool);
-       }
+       kfree(pHba->hrt);
+       kfree(pHba->lct);
+       kfree(pHba->status_block);
+       kfree(pHba->reply_pool);
 
        for(d = pHba->devices; d ; d = next){
                next = d->next;
        // If the command was successful, fill the fifo with our reply
        // message packets
        if(*status != 0x04 /*I2O_EXEC_OUTBOUND_INIT_COMPLETE*/) {
-               kfree((void*)status);
+               kfree(status);
                return -2;
        }
-       kfree((void*)status);
+       kfree(status);
 
-       if(pHba->reply_pool != NULL){
-               kfree(pHba->reply_pool);
-       }
+       kfree(pHba->reply_pool);
 
        pHba->reply_pool = (u32*)kmalloc(pHba->reply_fifo_size * REPLY_FRAME_SIZE * 4, GFP_KERNEL|ADDR32);
        if(!pHba->reply_pool){
        sys_tbl_len = sizeof(struct i2o_sys_tbl) +      // Header + IOPs
                                (hba_count) * sizeof(struct i2o_sys_tbl_entry);
 
-       if(sys_tbl)
-               kfree(sys_tbl);
+       kfree(sys_tbl);
 
        sys_tbl = kmalloc(sys_tbl_len, GFP_KERNEL|ADDR32);
        if(!sys_tbl) {
 
        unsigned int i;
 
        for (i = 0; i < shost->can_queue; i++)
-               if ((&ha->cp[i])->sglist)
-                       kfree((&ha->cp[i])->sglist);
+               kfree((&ha->cp[i])->sglist);
 
        for (i = 0; i < shost->can_queue; i++)
                pci_unmap_single(ha->pdev, ha->cp[i].cp_dma_addr,
 
        rq = kmalloc (sizeof (struct request), GFP_ATOMIC);
        buf = kmalloc(SCSI_SENSE_BUFFERSIZE, GFP_ATOMIC);
        if (pc == NULL || rq == NULL || buf == NULL) {
-               if (pc) kfree(pc);
-               if (rq) kfree(rq);
-               if (buf) kfree(buf);
+               kfree(buf);
+               kfree(rq);
+               kfree(pc);
                return -ENOMEM;
        }
        memset (pc, 0, sizeof (idescsi_pc_t));
        spin_lock_irq(host->host_lock);
        return 0;
 abort:
-       if (pc) kfree (pc);
-       if (rq) kfree (rq);
+       kfree (pc);
+       kfree (rq);
        cmd->result = DID_ERROR << 16;
        done(cmd);
        return 0;
 
                        ha->enq = NULL;
                }
 
-               if (ha->conf) {
-                       kfree(ha->conf);
-                       ha->conf = NULL;
-               }
+               kfree(ha->conf);
+               ha->conf = NULL;
 
                if (ha->adapt) {
                        pci_free_consistent(ha->pcidev,
                        ha->logical_drive_info = NULL;
                }
 
-               if (ha->nvram) {
-                       kfree(ha->nvram);
-                       ha->nvram = NULL;
-               }
+               kfree(ha->nvram);
+               ha->nvram = NULL;
 
-               if (ha->subsys) {
-                       kfree(ha->subsys);
-                       ha->subsys = NULL;
-               }
+               kfree(ha->subsys);
+               ha->subsys = NULL;
 
                if (ha->ioctl_data) {
                        pci_free_consistent(ha->pcidev, ha->ioctl_len,
 
        if (((pcmd = kmalloc(sizeof (struct lpfc_dmabuf), GFP_KERNEL)) == 0) ||
            ((pcmd->virt = lpfc_mbuf_alloc(phba,
                                           MEM_PRI, &(pcmd->phys))) == 0)) {
-               if (pcmd)
-                       kfree(pcmd);
+               kfree(pcmd);
 
                spin_lock_irq(phba->host->host_lock);
                lpfc_sli_release_iocbq(phba, elsiocb);
                        prsp->virt = lpfc_mbuf_alloc(phba, MEM_PRI,
                                                     &prsp->phys);
                if (prsp == 0 || prsp->virt == 0) {
-                       if (prsp)
-                               kfree(prsp);
+                       kfree(prsp);
                        lpfc_mbuf_free(phba, pcmd->virt, pcmd->phys);
                        kfree(pcmd);
                        spin_lock_irq(phba->host->host_lock);
                lpfc_mbuf_free(phba, prsp->virt, prsp->phys);
                kfree(pcmd);
                kfree(prsp);
-               if (pbuflist)
-                       kfree(pbuflist);
+               kfree(pbuflist);
                return NULL;
        }
 
 
                    mp1->virt = lpfc_mbuf_alloc(phba, MEM_PRI,
                                                &mp1->phys);
                if (mp1 == 0 || mp1->virt == 0) {
-                       if (mp1)
-                               kfree(mp1);
+                       kfree(mp1);
                        spin_lock_irq(phba->host->host_lock);
                        lpfc_sli_release_iocbq(phba, iocb);
                        spin_unlock_irq(phba->host->host_lock);
                                mp2->virt = lpfc_mbuf_alloc(phba, MEM_PRI,
                                                            &mp2->phys);
                        if (mp2 == 0 || mp2->virt == 0) {
-                               if (mp2)
-                                       kfree(mp2);
+                               kfree(mp2);
                                lpfc_mbuf_free(phba, mp1->virt, mp1->phys);
                                kfree(mp1);
                                spin_lock_irq(phba->host->host_lock);
 
 
        if (((mp = kmalloc(sizeof (struct lpfc_dmabuf), GFP_KERNEL)) == 0) ||
            ((mp->virt = lpfc_mbuf_alloc(phba, 0, &(mp->phys))) == 0)) {
-               if (mp)
-                       kfree(mp);
+               kfree(mp);
                mb->mbxCommand = MBX_READ_SPARM64;
                /* READ_SPARAM: no buffers */
                lpfc_printf_log(phba,
        /* Get a buffer to hold NPorts Service Parameters */
        if (((mp = kmalloc(sizeof (struct lpfc_dmabuf), GFP_KERNEL)) == NULL) ||
            ((mp->virt = lpfc_mbuf_alloc(phba, 0, &(mp->phys))) == 0)) {
-               if (mp)
-                       kfree(mp);
-
+               kfree(mp);
                mb->mbxCommand = MBX_REG_LOGIN64;
                /* REG_LOGIN: no buffers */
                lpfc_printf_log(phba,
 
 
                INIT_LIST_HEAD(&(pring->txq));
 
-               if (pring->fast_lookup) {
-                       kfree(pring->fast_lookup);
-                       pring->fast_lookup = NULL;
-               }
-
+               kfree(pring->fast_lookup);
+               pring->fast_lookup = NULL;
        }
 
        spin_unlock_irqrestore(phba->host->host_lock, flags);
 
 {
        mraid_device_t  *raid_dev = ADAP2RAIDDEV(adapter);
 
-       if (raid_dev->sysfs_uioc) kfree(raid_dev->sysfs_uioc);
-
-       if (raid_dev->sysfs_mbox64) kfree(raid_dev->sysfs_mbox64);
+       kfree(raid_dev->sysfs_uioc);
+       kfree(raid_dev->sysfs_mbox64);
 
        if (raid_dev->sysfs_buffer) {
                pci_free_consistent(adapter->pdev, PAGE_SIZE,
 
 
 memalloc_error:
 
-       if (adapter->kioc_list)
-               kfree(adapter->kioc_list);
-
-       if (adapter->mbox_list)
-               kfree(adapter->mbox_list);
+       kfree(adapter->kioc_list);
+       kfree(adapter->mbox_list);
 
        if (adapter->pthru_dma_pool)
                pci_pool_destroy(adapter->pthru_dma_pool);
 
-       if (adapter)
-               kfree(adapter);
+       kfree(adapter);
 
        return rval;
 }
        }
 
        kfree(adp->kioc_list);
-
        kfree(adp->mbox_list);
 
        pci_pool_destroy(adp->pthru_dma_pool);
 
        }
 
 cleanup_allocation:
-       if (new_fcport)
-               kfree(new_fcport);
+       kfree(new_fcport);
 
        if (rval != QLA_SUCCESS) {
                DEBUG2(printk("scsi(%ld): Configure local loop error exit: "
        /* Allocate temporary fcport for any new fcports discovered. */
        new_fcport = qla2x00_alloc_fcport(ha, GFP_KERNEL);
        if (new_fcport == NULL) {
-               if (swl)
-                       kfree(swl);
+               kfree(swl);
                return (QLA_MEMORY_ALLOC_FAILED);
        }
        new_fcport->flags |= (FCF_FABRIC_DEVICE | FCF_LOGIN_NEEDED);
                nxt_d_id.b24 = new_fcport->d_id.b24;
                new_fcport = qla2x00_alloc_fcport(ha, GFP_KERNEL);
                if (new_fcport == NULL) {
-                       if (swl)
-                               kfree(swl);
+                       kfree(swl);
                        return (QLA_MEMORY_ALLOC_FAILED);
                }
                new_fcport->flags |= (FCF_FABRIC_DEVICE | FCF_LOGIN_NEEDED);
                new_fcport->d_id.b24 = nxt_d_id.b24;
        }
 
-       if (swl)
-               kfree(swl);
-
-       if (new_fcport)
-               kfree(new_fcport);
+       kfree(swl);
+       kfree(new_fcport);
 
        if (!list_empty(new_fcports))
                ha->device_flags |= DFLG_FABRIC_DEVICES;
 
        sg_finish_rem_req(srp);
        retval = count;
 free_old_hdr:
-       if (old_hdr)
-               kfree(old_hdr);
+       kfree(old_hdr);
        return retval;
 }
 
        sg_sysfs_valid = 0;
        unregister_chrdev_region(MKDEV(SCSI_GENERIC_MAJOR, 0),
                                 SG_MAX_DEVS);
-       if (sg_dev_arr != NULL) {
-               kfree((char *) sg_dev_arr);
-               sg_dev_arr = NULL;
-       }
+       kfree((char *)sg_dev_arr);
+       sg_dev_arr = NULL;
        sg_dev_max = 0;
 }
 
 
        write_unlock(&st_dev_arr_lock);
 out_put_disk:
        put_disk(disk);
-       if (tpnt)
-               kfree(tpnt);
+       kfree(tpnt);
 out_buffer_free:
        kfree(buffer);
 out:
 
 
    for (j = 0; sh[j] != NULL && sh[j] != shpnt; j++);
 
-   if (sh[j] == NULL) panic("%s: release, invalid Scsi_Host pointer.\n",
-                            driver_name);
+   if (sh[j] == NULL)
+      panic("%s: release, invalid Scsi_Host pointer.\n", driver_name);
 
    for (i = 0; i < sh[j]->can_queue; i++)
-      if ((&HD(j)->cp[i])->sglist) kfree((&HD(j)->cp[i])->sglist);
+      kfree((&HD(j)->cp[i])->sglist);
 
    for (i = 0; i < sh[j]->can_queue; i++)
       pci_unmap_single(HD(j)->pdev, HD(j)->cp[i].cp_dma_addr,
 
    free_irq(sh[j]->irq, &sha[j]);
 
-   if (sh[j]->dma_channel != NO_DMA) free_dma(sh[j]->dma_channel);
+   if (sh[j]->dma_channel != NO_DMA)
+      free_dma(sh[j]->dma_channel);
 
    release_region(sh[j]->io_port, sh[j]->n_io_port);
    scsi_unregister(sh[j]);