[SCSI] fnic: Pad the unused bytes of CDB to 0s
authorAbhijeet Joglekar <abjoglek@cisco.com>
Wed, 21 Oct 2009 23:28:25 +0000 (16:28 -0700)
committerJames Bottomley <James.Bottomley@suse.de>
Fri, 4 Dec 2009 18:00:36 +0000 (12:00 -0600)
Signed-off-by: Abhijeet Joglekar <abjoglek@cisco.com>
Signed-off-by: Robert Love <robert.w.love@intel.com>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
drivers/scsi/fnic/fnic_res.h
drivers/scsi/fnic/fnic_scsi.c

index b6f31026253423fc3278a6a4961a5302466a15ae..88c4471c18f04087b15c0200c9994ff28ca128c2 100644 (file)
@@ -58,6 +58,7 @@ static inline void fnic_queue_wq_copy_desc_icmnd_16(struct vnic_wq_copy *wq,
                                                    u64 sgl_addr, u64 sns_addr,
                                                    u8 crn, u8 pri_ta,
                                                    u8 flags, u8 *scsi_cdb,
+                                                   u8 cdb_len,
                                                    u32 data_len, u8 *lun,
                                                    u32 d_id, u16 mss,
                                                    u32 ratov, u32 edtov)
@@ -82,7 +83,8 @@ static inline void fnic_queue_wq_copy_desc_icmnd_16(struct vnic_wq_copy *wq,
        desc->u.icmnd_16.pri_ta = pri_ta;       /* SCSI Pri & Task attribute */
        desc->u.icmnd_16._resvd1 = 0;           /* reserved: should be 0 */
        desc->u.icmnd_16.flags = flags;         /* command flags */
-       memcpy(desc->u.icmnd_16.scsi_cdb, scsi_cdb, CDB_16);    /* SCSI CDB */
+       memset(desc->u.icmnd_16.scsi_cdb, 0, CDB_16);
+       memcpy(desc->u.icmnd_16.scsi_cdb, scsi_cdb, cdb_len);    /* SCSI CDB */
        desc->u.icmnd_16.data_len = data_len;   /* length of data expected */
        memcpy(desc->u.icmnd_16.lun, lun, LUN_ADDRESS);  /* LUN address */
        desc->u.icmnd_16._resvd2 = 0;           /* reserved */
index bfc996971b814009ac996b295414eacc668c5fe9..b5d17385939bafb8ce57acaf1ab28212fa61f89e 100644 (file)
@@ -319,7 +319,8 @@ static inline int fnic_queue_wq_copy_desc(struct fnic *fnic,
                                         0, /* scsi cmd ref, always 0 */
                                         pri_tag, /* scsi pri and tag */
                                         flags, /* command flags */
-                                        sc->cmnd, scsi_bufflen(sc),
+                                        sc->cmnd, sc->cmd_len,
+                                        scsi_bufflen(sc),
                                         fc_lun.scsi_lun, io_req->port_id,
                                         rport->maxframe_size, rp->r_a_tov,
                                         rp->e_d_tov);