Revert "target: Fix residual overflow handling in target_complete_cmd_with_length"
authorNicholas Bellinger <nab@linux-iscsi.org>
Sun, 16 Oct 2016 07:27:42 +0000 (00:27 -0700)
committerNicholas Bellinger <nab@linux-iscsi.org>
Thu, 20 Oct 2016 04:22:34 +0000 (21:22 -0700)
commit61f36166c245e563c7a2b624f4c78c5ce0f680d6
tree338291f4751dc0ed4a39c30c5e3a38c448741d7b
parent926317de33998c112c5510301868ea9aa34097e2
Revert "target: Fix residual overflow handling in target_complete_cmd_with_length"

This reverts commit c1ccbfe0311e2380a6d2dcb0714b36904f5d586f.

Reverting this patch, as it incorrectly assumes the additional length
for INQUIRY in target_complete_cmd_with_length() is SCSI allocation
length, which breaks existing user-space code when SCSI allocation
length is smaller than additional length.

  root@scsi-mq:~# sg_inq --len=4 -vvvv /dev/sdb
  found bsg_major=253
  open /dev/sdb with flags=0x800
      inquiry cdb: 12 00 00 00 04 00
        duration=0 ms
      inquiry: pass-through requested 4 bytes (data-in) but got -28 bytes
      inquiry: pass-through can't get negative bytes, say it got none
      inquiry: got too few bytes (0)
  INQUIRY resid (32) should never exceed requested len=4
      inquiry: failed requesting 4 byte response: Malformed response to
               SCSI command [resid=32]

AFAICT the original change was not to address a specific host issue,
so go ahead and revert to original logic for now.

Cc: Douglas Gilbert <dgilbert@interlog.com>
Cc: Martin K. Petersen <martin.petersen@oracle.com>
Cc: Sumit Rai <sumitrai96@gmail.com>
Cc: stable@vger.kernel.org # 4.8+
Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
drivers/target/target_core_transport.c