• Tejun Heo's avatar
    [PATCH] libata: take scmd->cmd_len into account when translating SCSI commands · 2e5704f6
    Tejun Heo authored
    libata depended on SCSI command to have the correct length when
    tranlating it into an ATA command.  This generally worked for commands
    issued by SCSI HLD but user could issue arbitrary broken command using
    sg interface.
    
    Also, when building ATAPI command, full command size was always
    copied.  Because some ATAPI devices needs bytes after CDB cleared, if
    upper layer doesn't clear bytes after CDB, such devices will
    malfunction.  This necessiated recent clear-garbage-after-CDB fix in
    sg interfaces.  However, scsi_execute() isn't fixed yet and HL-DT-ST
    DVD-RAM GSA-H30N malfunctions on initialization commands issued from
    SCSI.
    
    This patch makes xlat functions always consider SCSI cmd_len.  Each
    translation function checks for proper cmd_len and ATAPI translaation
    clears bytes after CDB.
    Signed-off-by: default avatarTejun Heo <htejun@gmail.com>
    Cc: Jens Axboe <jens.axboe@oracle.com>
    Cc: Douglas Gilbert <dougg@torque.net>
    Signed-off-by: default avatarJeff Garzik <jeff@garzik.org>
    2e5704f6
libata-scsi.c 81.7 KB