• Nicholas Bellinger's avatar
    tcm_loop: Add explict read buffer memset for SCF_SCSI_CONTROL_SG_IO_CDB · 8cd79f24
    Nicholas Bellinger authored
    This patch addresses an issue with buggy userspace code sending I/O
    via scsi-generic that does not explictly clear their associated read
    buffers.  It adds an explict memset of the first SGL entry within
    tcm_loop_new_cmd_map() for SCF_SCSI_CONTROL_SG_IO_CDB payloads that
    are currently guaranteed to be a single SGL by target-core code.
    
    This issue is a side effect of the v3.1-rc1 merge to remove the
    extra memcpy between certain control CDB types using a contigious
    + cleared buffer in target-core, and performing a memcpy into the
    SGL list within tcm_loop.
    
    It was originally mainfesting itself by udev + scsi_id + scsi-generic
    not properly setting up the expected /dev/disk/by-id/ symlinks because
    the INQUIRY payload was containing extra bogus data preventing the
    proper NAA IEEE WWN from being parsed by userspace.
    
    Cc: Christoph Hellwig <hch@lst.de>
    Cc: Andy Grover <agrover@redhat.com>
    Cc: stable@kernel.org
    Signed-off-by: default avatarNicholas Bellinger <nab@linux-iscsi.org>
    8cd79f24
tcm_loop.c 40.8 KB