diff options
author | Ben Collins <bcollins@ubuntu.com> | 2006-06-12 18:12:59 -0400 |
---|---|---|
committer | Ben Collins <bcollins@ubuntu.com> | 2006-06-12 18:12:59 -0400 |
commit | fe42b05a9929e159355bde6025ae46db2ac88658 (patch) | |
tree | 61a4bd4dd7b138e3d3148f1b288158eb53361c37 | |
parent | eaf88450d21fc839c3e77fa6942b8d4192bdfe53 (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.c | 34 | ||||
-rw-r--r-- | drivers/ieee1394/sbp2.h | 5 |
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 | */ | ||
2118 | static 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 | */ |
2144 | static int sbp2_handle_status_write(struct hpsb_host *host, int nodeid, int destid, | 2117 | static 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, | |||
395 | static int sbp2_send_command(struct scsi_id_instance_data *scsi_id, | 395 | static 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 *)); |
398 | static unsigned int sbp2_status_to_sense_data(unchar *sbp2_status, unchar *sense_data); | 398 | static unsigned int sbp2_status_to_sense_data(unchar *sbp2_status, |
399 | static void sbp2_check_sbp2_response(struct scsi_id_instance_data *scsi_id, | 399 | unchar *sense_data); |
400 | struct scsi_cmnd *SCpnt); | ||
401 | static void sbp2_parse_unit_directory(struct scsi_id_instance_data *scsi_id, | 400 | static void sbp2_parse_unit_directory(struct scsi_id_instance_data *scsi_id, |
402 | struct unit_directory *ud); | 401 | struct unit_directory *ud); |
403 | static int sbp2_set_busy_timeout(struct scsi_id_instance_data *scsi_id); | 402 | static int sbp2_set_busy_timeout(struct scsi_id_instance_data *scsi_id); |