mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2025-01-21 05:14:52 +08:00
target: accept REQUEST_SENSE with 18bytes
WindowsXP+BOT issues a MODE_SENSE request with page 0x1c which is not suppoerted by target. Target rejects that command with TCM_INVALID_CDB_FIELD, so far so good. On BOT I can't send the SENSE response back, instead I can only reply that an error occured. The next thing happens is a REQUEST_SENSE request with 18 bytes length. Since the check here is more than 18 bytes I have to NACK that request as well. This is not really required: We check for some additional room, but we never use it. The additional length is set to 0xa so the total length is 0xa + 8 = 18 which is fine with my 18 bytes. Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
This commit is contained in:
parent
bf0053550a
commit
95fe1ee41e
@ -1058,11 +1058,8 @@ int target_emulate_request_sense(struct se_task *task)
|
|||||||
*/
|
*/
|
||||||
buf[0] = 0x70;
|
buf[0] = 0x70;
|
||||||
buf[SPC_SENSE_KEY_OFFSET] = UNIT_ATTENTION;
|
buf[SPC_SENSE_KEY_OFFSET] = UNIT_ATTENTION;
|
||||||
/*
|
|
||||||
* Make sure request data length is enough for additional
|
if (cmd->data_length < 18) {
|
||||||
* sense data.
|
|
||||||
*/
|
|
||||||
if (cmd->data_length <= 18) {
|
|
||||||
buf[7] = 0x00;
|
buf[7] = 0x00;
|
||||||
err = -EINVAL;
|
err = -EINVAL;
|
||||||
goto end;
|
goto end;
|
||||||
@ -1079,11 +1076,8 @@ int target_emulate_request_sense(struct se_task *task)
|
|||||||
*/
|
*/
|
||||||
buf[0] = 0x70;
|
buf[0] = 0x70;
|
||||||
buf[SPC_SENSE_KEY_OFFSET] = NO_SENSE;
|
buf[SPC_SENSE_KEY_OFFSET] = NO_SENSE;
|
||||||
/*
|
|
||||||
* Make sure request data length is enough for additional
|
if (cmd->data_length < 18) {
|
||||||
* sense data.
|
|
||||||
*/
|
|
||||||
if (cmd->data_length <= 18) {
|
|
||||||
buf[7] = 0x00;
|
buf[7] = 0x00;
|
||||||
err = -EINVAL;
|
err = -EINVAL;
|
||||||
goto end;
|
goto end;
|
||||||
|
Loading…
Reference in New Issue
Block a user