aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/scsi/a3000.c15
1 files changed, 3 insertions, 12 deletions
diff --git a/drivers/scsi/a3000.c b/drivers/scsi/a3000.c
index 796f1c4d772e..d7255c8bf281 100644
--- a/drivers/scsi/a3000.c
+++ b/drivers/scsi/a3000.c
@@ -70,12 +70,8 @@ static int dma_setup(struct scsi_cmnd *cmd, int dir_in)
70 70
71 if (!dir_in) { 71 if (!dir_in) {
72 /* copy to bounce buffer for a write */ 72 /* copy to bounce buffer for a write */
73 if (cmd->use_sg) { 73 memcpy (HDATA(a3000_host)->dma_bounce_buffer,
74 memcpy (HDATA(a3000_host)->dma_bounce_buffer, 74 cmd->SCp.ptr, cmd->SCp.this_residual);
75 cmd->SCp.ptr, cmd->SCp.this_residual);
76 } else
77 memcpy (HDATA(a3000_host)->dma_bounce_buffer,
78 cmd->request_buffer, cmd->request_bufflen);
79 } 75 }
80 76
81 addr = virt_to_bus(HDATA(a3000_host)->dma_bounce_buffer); 77 addr = virt_to_bus(HDATA(a3000_host)->dma_bounce_buffer);
@@ -146,7 +142,7 @@ static void dma_stop(struct Scsi_Host *instance, struct scsi_cmnd *SCpnt,
146 142
147 /* copy from a bounce buffer, if necessary */ 143 /* copy from a bounce buffer, if necessary */
148 if (status && HDATA(instance)->dma_bounce_buffer) { 144 if (status && HDATA(instance)->dma_bounce_buffer) {
149 if (SCpnt && SCpnt->use_sg) { 145 if (SCpnt) {
150 if (HDATA(instance)->dma_dir && SCpnt) 146 if (HDATA(instance)->dma_dir && SCpnt)
151 memcpy (SCpnt->SCp.ptr, 147 memcpy (SCpnt->SCp.ptr,
152 HDATA(instance)->dma_bounce_buffer, 148 HDATA(instance)->dma_bounce_buffer,
@@ -155,11 +151,6 @@ static void dma_stop(struct Scsi_Host *instance, struct scsi_cmnd *SCpnt,
155 HDATA(instance)->dma_bounce_buffer = NULL; 151 HDATA(instance)->dma_bounce_buffer = NULL;
156 HDATA(instance)->dma_bounce_len = 0; 152 HDATA(instance)->dma_bounce_len = 0;
157 } else { 153 } else {
158 if (HDATA(instance)->dma_dir && SCpnt)
159 memcpy (SCpnt->request_buffer,
160 HDATA(instance)->dma_bounce_buffer,
161 SCpnt->request_bufflen);
162
163 kfree (HDATA(instance)->dma_bounce_buffer); 154 kfree (HDATA(instance)->dma_bounce_buffer);
164 HDATA(instance)->dma_bounce_buffer = NULL; 155 HDATA(instance)->dma_bounce_buffer = NULL;
165 HDATA(instance)->dma_bounce_len = 0; 156 HDATA(instance)->dma_bounce_len = 0;