aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/megaraid.c
diff options
context:
space:
mode:
authorChristoph Hellwig <hch@lst.de>2006-06-03 07:21:13 -0400
committerJames Bottomley <jejb@mulgrave.il.steeleye.com>2006-06-06 11:07:25 -0400
commit5d5ff44fe6775ccb922fd1f7d478b2ba9ca95068 (patch)
treed8569caefe1cb5ecced30929ef98d3e1fe642425 /drivers/scsi/megaraid.c
parente4a082c7c1f9a7b11fece6918e7ee5519b39ac46 (diff)
[SCSI] fix up request buffer reference in various scsi drivers
Various scsi drivers use scsi_cmnd.buffer and scsi_cmnd.bufflen in their queuecommand functions. Those fields are internal storage for the midlayer only and are used to restore the original payload after request_buffer and request_bufflen have been overwritten for EH. Using the buffer and bufflen fields means they do very broken things in error handling. Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
Diffstat (limited to 'drivers/scsi/megaraid.c')
-rw-r--r--drivers/scsi/megaraid.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/scsi/megaraid.c b/drivers/scsi/megaraid.c
index 80b68a2481b3..d245717fee65 100644
--- a/drivers/scsi/megaraid.c
+++ b/drivers/scsi/megaraid.c
@@ -524,7 +524,7 @@ mega_build_cmd(adapter_t *adapter, Scsi_Cmnd *cmd, int *busy)
524 * filter the internal and ioctl commands 524 * filter the internal and ioctl commands
525 */ 525 */
526 if((cmd->cmnd[0] == MEGA_INTERNAL_CMD)) { 526 if((cmd->cmnd[0] == MEGA_INTERNAL_CMD)) {
527 return cmd->buffer; 527 return cmd->request_buffer;
528 } 528 }
529 529
530 530
@@ -4493,7 +4493,7 @@ mega_internal_command(adapter_t *adapter, megacmd_t *mc, mega_passthru *pthru)
4493 scmd->device = sdev; 4493 scmd->device = sdev;
4494 4494
4495 scmd->device->host = adapter->host; 4495 scmd->device->host = adapter->host;
4496 scmd->buffer = (void *)scb; 4496 scmd->request_buffer = (void *)scb;
4497 scmd->cmnd[0] = MEGA_INTERNAL_CMD; 4497 scmd->cmnd[0] = MEGA_INTERNAL_CMD;
4498 4498
4499 scb->state |= SCB_ACTIVE; 4499 scb->state |= SCB_ACTIVE;