On Wed, 28 Jan 2009 00:46:13 +0100 Stefan Richter <stefanr@xxxxxxxxxxxxxxxxx> wrote: > FUJITA Tomonori wrote: > > On Tue, 27 Jan 2009 18:03:40 +0100 (CET) > > Stefan Richter <stefanr@xxxxxxxxxxxxxxxxx> wrote: > >> +static void sbp2_unmap_scatterlist(struct device *card_device, > >> + struct sbp2_command_orb *orb) > >> +{ > >> + if (scsi_sg_count(orb->cmd)) > >> + dma_unmap_sg(card_device, scsi_sglist(orb->cmd), > >> + scsi_sg_count(orb->cmd), > >> + orb->cmd->sc_data_direction); > >> + > >> + if (orb->page_table_bus) > >> + dma_unmap_single(card_device, orb->page_table_bus, > >> + sizeof(orb->page_table), DMA_TO_DEVICE); > > > > Well, this does not look correct since zero can be a valid dma > > address. > > Hmm. > > > static void sbp2_unmap_scatterlist(struct device *card_device, > > struct sbp2_command_orb *orb) > > { > > if (scsi_sg_count(orb->cmd)) > > dma_unmap_sg(card_device, scsi_sglist(orb->cmd), > > scsi_sg_count(orb->cmd), > > orb->cmd->sc_data_direction); > > > > if (scsi_sg_count(orb->cmd) > 1) > > dma_unmap_single(card_device, orb->page_table_bus, > > sizeof(orb->page_table), DMA_TO_DEVICE); > > > > > > Well, looks cranky a bit but firewire is cranky for me :) > > Even if scsi_sg_count(cmd) > 1, the outcome of dma_map_sg() could have > been 1, couldn't it? So I need to take note of that in another way. Oops, right. Probably, you need to store the return value of dma_map_sg in orb. -- To unsubscribe from this list: send the line "unsubscribe linux-scsi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html