aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/arm/powertec.c
diff options
context:
space:
mode:
authorRussell King <rmk@dyn-67.arm.linux.org.uk>2007-03-04 20:21:38 +0000
committerRussell King <rmk+kernel@arm.linux.org.uk>2007-03-04 20:33:31 +0000
commit23d046f43a05155e050a68f3ad1f19b672713374 (patch)
tree5c32d8fde63c81a76083d2a550d5ba02ba44a873 /drivers/scsi/arm/powertec.c
parent[ARM] ARM FAS216: don't modify scsi_cmnd request_bufflen (diff)
downloadlinux-dev-23d046f43a05155e050a68f3ad1f19b672713374.tar.xz
linux-dev-23d046f43a05155e050a68f3ad1f19b672713374.zip
[ARM] ARM SCSI: Don't try to dma_map_sg too many scatterlist entries
An off-by-one bug meant we were always trying to map one too many scatterlist entries. This was mostly harmless prior to the checks going in to consistent_sync(), but now causes the kernel to BUG. Also, powertec.c was missing an assignment to info->ec. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'drivers/scsi/arm/powertec.c')
-rw-r--r--drivers/scsi/arm/powertec.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/drivers/scsi/arm/powertec.c b/drivers/scsi/arm/powertec.c
index f9cd20bfb958..159047a34997 100644
--- a/drivers/scsi/arm/powertec.c
+++ b/drivers/scsi/arm/powertec.c
@@ -148,10 +148,10 @@ powertecscsi_dma_setup(struct Scsi_Host *host, struct scsi_pointer *SCp,
map_dir = DMA_FROM_DEVICE,
dma_dir = DMA_MODE_READ;
- dma_map_sg(dev, info->sg, bufs + 1, map_dir);
+ dma_map_sg(dev, info->sg, bufs, map_dir);
disable_dma(dmach);
- set_dma_sg(dmach, info->sg, bufs + 1);
+ set_dma_sg(dmach, info->sg, bufs);
set_dma_mode(dmach, dma_dir);
enable_dma(dmach);
return fasdma_real_all;
@@ -342,6 +342,7 @@ powertecscsi_probe(struct expansion_card *ec, const struct ecard_id *id)
info->base = base;
powertecscsi_terminator_ctl(host, term[ec->slot_no]);
+ info->ec = ec;
info->info.scsi.io_base = base + POWERTEC_FAS216_OFFSET;
info->info.scsi.io_shift = POWERTEC_FAS216_SHIFT;
info->info.scsi.irq = ec->irq;