aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBen Collins <bcollins@ubuntu.com>2006-06-12 18:12:59 -0400
committerBen Collins <bcollins@ubuntu.com>2006-06-12 18:12:59 -0400
commitfe42b05a9929e159355bde6025ae46db2ac88658 (patch)
tree61a4bd4dd7b138e3d3148f1b288158eb53361c37
parenteaf88450d21fc839c3e77fa6942b8d4192bdfe53 (diff)
sbp2: remove manipulation of inquiry response
This code became ineffective a few Linux releases ago and is not required anyway. Note from Christoph Hellwig: scsi_cmnd.request_buffer is always a scatterlist these days. Checking random bites into it and then mangling the data in sbp2_check_sbp2_response will cause really bad memory corruption when you're not lucky enough to have the check not trigger by luck. Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de> Signed-off-by: Ben Collins <bcollins@ubuntu.com>
-rw-r--r--drivers/ieee1394/sbp2.c34
-rw-r--r--drivers/ieee1394/sbp2.h5
2 files changed, 2 insertions, 37 deletions
diff --git a/drivers/ieee1394/sbp2.c b/drivers/ieee1394/sbp2.c
index c30e03a0e63b..11c353a4653b 100644
--- a/drivers/ieee1394/sbp2.c
+++ b/drivers/ieee1394/sbp2.c
@@ -2112,33 +2112,6 @@ static unsigned int sbp2_status_to_sense_data(unchar *sbp2_status, unchar *sense
2112} 2112}
2113 2113
2114/* 2114/*
2115 * This function is called after a command is completed, in order to do any necessary SBP-2
2116 * response data translations for the SCSI stack
2117 */
2118static void sbp2_check_sbp2_response(struct scsi_id_instance_data *scsi_id,
2119 struct scsi_cmnd *SCpnt)
2120{
2121 u8 *scsi_buf = SCpnt->request_buffer;
2122
2123 SBP2_DEBUG_ENTER();
2124
2125 if (SCpnt->cmnd[0] == INQUIRY && (SCpnt->cmnd[1] & 3) == 0) {
2126 /*
2127 * Make sure data length is ok. Minimum length is 36 bytes
2128 */
2129 if (scsi_buf[4] == 0) {
2130 scsi_buf[4] = 36 - 5;
2131 }
2132
2133 /*
2134 * Fix ansi revision and response data format
2135 */
2136 scsi_buf[2] |= 2;
2137 scsi_buf[3] = (scsi_buf[3] & 0xf0) | 2;
2138 }
2139}
2140
2141/*
2142 * This function deals with status writes from the SBP-2 device 2115 * This function deals with status writes from the SBP-2 device
2143 */ 2116 */
2144static int sbp2_handle_status_write(struct hpsb_host *host, int nodeid, int destid, 2117static int sbp2_handle_status_write(struct hpsb_host *host, int nodeid, int destid,
@@ -2477,13 +2450,6 @@ static void sbp2scsi_complete_command(struct scsi_id_instance_data *scsi_id,
2477 } 2450 }
2478 2451
2479 /* 2452 /*
2480 * Take care of any sbp2 response data mucking here (RBC stuff, etc.)
2481 */
2482 if (SCpnt->result == DID_OK << 16) {
2483 sbp2_check_sbp2_response(scsi_id, SCpnt);
2484 }
2485
2486 /*
2487 * If a bus reset is in progress and there was an error, complete 2453 * If a bus reset is in progress and there was an error, complete
2488 * the command as busy so that it will get retried. 2454 * the command as busy so that it will get retried.
2489 */ 2455 */
diff --git a/drivers/ieee1394/sbp2.h b/drivers/ieee1394/sbp2.h
index f4ccc9d0fba4..2f53b16afc51 100644
--- a/drivers/ieee1394/sbp2.h
+++ b/drivers/ieee1394/sbp2.h
@@ -395,9 +395,8 @@ static int sbp2_link_orb_command(struct scsi_id_instance_data *scsi_id,
395static int sbp2_send_command(struct scsi_id_instance_data *scsi_id, 395static int sbp2_send_command(struct scsi_id_instance_data *scsi_id,
396 struct scsi_cmnd *SCpnt, 396 struct scsi_cmnd *SCpnt,
397 void (*done)(struct scsi_cmnd *)); 397 void (*done)(struct scsi_cmnd *));
398static unsigned int sbp2_status_to_sense_data(unchar *sbp2_status, unchar *sense_data); 398static unsigned int sbp2_status_to_sense_data(unchar *sbp2_status,
399static void sbp2_check_sbp2_response(struct scsi_id_instance_data *scsi_id, 399 unchar *sense_data);
400 struct scsi_cmnd *SCpnt);
401static void sbp2_parse_unit_directory(struct scsi_id_instance_data *scsi_id, 400static void sbp2_parse_unit_directory(struct scsi_id_instance_data *scsi_id,
402 struct unit_directory *ud); 401 struct unit_directory *ud);
403static int sbp2_set_busy_timeout(struct scsi_id_instance_data *scsi_id); 402static int sbp2_set_busy_timeout(struct scsi_id_instance_data *scsi_id);