diff --git a/drivers/block/cciss_scsi.c b/drivers/block/cciss_scsi.c
--- a/drivers/block/cciss_scsi.c
+++ b/drivers/block/cciss_scsi.c
@@ -1191,28 +1191,28 @@ cciss_scatter_gather(struct pci_dev *pde
 		struct scsi_cmnd *cmd)
 {
 	unsigned int len;
-	struct scatterlist *sg;
+	struct sg_ring *sg;
 	__u64 addr64;
-	int use_sg, i;
+	int count = 0, i;
 
-	BUG_ON(scsi_sg_count(cmd) > MAXSGENTRIES);
-
-	use_sg = scsi_dma_map(cmd);
-	if (use_sg) {	/* not too many addrs? */
-		scsi_for_each_sg(cmd, sg, use_sg, i) {
-			addr64 = (__u64) sg_dma_address(sg);
-			len  = sg_dma_len(sg);
+	if (scsi_dma_map(cmd) > 0) {	/* not too many addrs? */
+		sg_ring_for_each(cmd->sg, sg, i) {
+			addr64 = (__u64) sg_dma_address(&sg->sg[i]);
+			len  = sg_dma_len(&sg->sg[i]);
 			cp->SG[i].Addr.lower =
 				(__u32) (addr64 & (__u64) 0x00000000FFFFFFFF);
 			cp->SG[i].Addr.upper =
 				(__u32) ((addr64 >> 32) & (__u64) 0x00000000FFFFFFFF);
 			cp->SG[i].Len = len;
 			cp->SG[i].Ext = 0;  // we are not chaining
+			count++;
 		}
 	}
 
-	cp->Header.SGList = (__u8) use_sg;   /* no. SGs contig in this cmd */
-	cp->Header.SGTotal = (__u16) use_sg; /* total sgs in this cmd list */
+	cp->Header.SGList = (__u8) count;   /* no. SGs contig in this cmd */
+	cp->Header.SGTotal = (__u16) count; /* total sgs in this cmd list */
+
+	BUG_ON(count > MAXSGENTRIES);
 	return;
 }
 
diff --git a/drivers/scsi/aic7xxx/aic79xx_osm.c b/drivers/scsi/aic7xxx/aic79xx_osm.c
--- a/drivers/scsi/aic7xxx/aic79xx_osm.c
+++ b/drivers/scsi/aic7xxx/aic79xx_osm.c
@@ -1490,19 +1490,19 @@ ahd_linux_run_command(struct ahd_softc *
 	BUG_ON(nseg < 0);
 	if (nseg > 0) {
 		void *sg = scb->sg_list;
-		struct scatterlist *cur_seg;
+		struct sg_ring *cur_sgr;
 		int i;
 
 		scb->platform_data->xfer_len = 0;
 
-		scsi_for_each_sg(cmd, cur_seg, nseg, i) {
+		sg_ring_for_each(cmd->sg, cur_sgr, i) {
 			dma_addr_t addr;
 			bus_size_t len;
 
-			addr = sg_dma_address(cur_seg);
-			len = sg_dma_len(cur_seg);
+			addr = sg_dma_address(&cur_sgr->sg[i]);
+			len = sg_dma_len(&cur_sgr->sg[i]);
 			scb->platform_data->xfer_len += len;
-			sg = ahd_sg_setup(ahd, scb, sg, addr, len,
+			sg = ahd_sg_setup(ahd, scb, &cur_sgr->sg[i], addr, len,
 					  i == (nseg - 1));
 		}
 	}
diff --git a/drivers/scsi/scsi.c b/drivers/scsi/scsi.c
--- a/drivers/scsi/scsi.c
+++ b/drivers/scsi/scsi.c
@@ -369,7 +369,7 @@ void scsi_log_send(struct scsi_cmnd *cmd
 			if (level > 3) {
 				printk(KERN_INFO "buffer = 0x%p, bufflen = %d,"
 				       " queuecommand 0x%p\n",
-					scsi_sglist(cmd), scsi_bufflen(cmd),
+					cmd->sg, cmd->request_bufflen,
 					cmd->device->host->hostt->queuecommand);
 
 			}
