[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>

authored by Russell King and committed by Russell King 23d046f4 6b4df7ee

+7 -6
+2 -2
drivers/scsi/arm/cumana_2.c
··· 178 178 dma_dir = DMA_MODE_READ, 179 179 alatch_dir = ALATCH_DMA_IN; 180 180 181 - dma_map_sg(dev, info->sg, bufs + 1, map_dir); 181 + dma_map_sg(dev, info->sg, bufs, map_dir); 182 182 183 183 disable_dma(dmach); 184 - set_dma_sg(dmach, info->sg, bufs + 1); 184 + set_dma_sg(dmach, info->sg, bufs); 185 185 writeb(alatch_dir, info->base + CUMANASCSI2_ALATCH); 186 186 set_dma_mode(dmach, dma_dir); 187 187 enable_dma(dmach);
+2 -2
drivers/scsi/arm/eesox.c
··· 175 175 map_dir = DMA_FROM_DEVICE, 176 176 dma_dir = DMA_MODE_READ; 177 177 178 - dma_map_sg(dev, info->sg, bufs + 1, map_dir); 178 + dma_map_sg(dev, info->sg, bufs, map_dir); 179 179 180 180 disable_dma(dmach); 181 - set_dma_sg(dmach, info->sg, bufs + 1); 181 + set_dma_sg(dmach, info->sg, bufs); 182 182 set_dma_mode(dmach, dma_dir); 183 183 enable_dma(dmach); 184 184 return fasdma_real_all;
+3 -2
drivers/scsi/arm/powertec.c
··· 148 148 map_dir = DMA_FROM_DEVICE, 149 149 dma_dir = DMA_MODE_READ; 150 150 151 - dma_map_sg(dev, info->sg, bufs + 1, map_dir); 151 + dma_map_sg(dev, info->sg, bufs, map_dir); 152 152 153 153 disable_dma(dmach); 154 - set_dma_sg(dmach, info->sg, bufs + 1); 154 + set_dma_sg(dmach, info->sg, bufs); 155 155 set_dma_mode(dmach, dma_dir); 156 156 enable_dma(dmach); 157 157 return fasdma_real_all; ··· 342 342 info->base = base; 343 343 powertecscsi_terminator_ctl(host, term[ec->slot_no]); 344 344 345 + info->ec = ec; 345 346 info->info.scsi.io_base = base + POWERTEC_FAS216_OFFSET; 346 347 info->info.scsi.io_shift = POWERTEC_FAS216_SHIFT; 347 348 info->info.scsi.irq = ec->irq;