[SCSI] 3w-9xxx: scsi_dma_unmap fix
authoradam radford <aradford@gmail.com>
Tue, 5 May 2009 18:45:37 +0000 (11:45 -0700)
committerJames Bottomley <James.Bottomley@HansenPartnership.com>
Fri, 15 May 2009 16:23:32 +0000 (12:23 -0400)
This patch fixes the following regression the occurred during the
scsi_dma_map()/unmap() changes:

3w-9xxx 0001:45:00.0: DMA-API: device driver tries to free DMA memory
it has not allocated [device address=0x0000000000000000] [size=36
bytes]

Signed-off-by: Adam Radford <aradford@gmail.com>
Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
drivers/scsi/3w-9xxx.c

index 8b7983aba8f75ceabf987c25fc8e5a2a7e7f2fda..36c21b19e5d779c86a4ddf8138fda41a696bdd9f 100644 (file)
@@ -1978,7 +1978,8 @@ static void twa_unmap_scsi_data(TW_Device_Extension *tw_dev, int request_id)
 {
        struct scsi_cmnd *cmd = tw_dev->srb[request_id];
 
-       scsi_dma_unmap(cmd);
+       if (cmd->SCp.phase == TW_PHASE_SGLIST)
+               scsi_dma_unmap(cmd);
 } /* End twa_unmap_scsi_data() */
 
 /* scsi_host_template initializer */