CC: kbuild-...@lists.01.org
BCC: l...@intel.com
In-Reply-To: <20220410173652.313016-2-dgilb...@interlog.com>
References: <20220410173652.313016-2-dgilb...@interlog.com>
TO: Douglas Gilbert <dgilb...@interlog.com>
TO: linux-s...@vger.kernel.org
CC: martin.peter...@oracle.com
CC: j...@linux.vnet.ibm.com
CC: h...@suse.de
CC: bvanass...@acm.org
CC: h...@lst.de

Hi Douglas,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on jejb-scsi/for-next]
[also build test WARNING on mkp-scsi/for-next v5.18-rc1 next-20220408]
[cannot apply to hch-configfs/for-next]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    
https://github.com/intel-lab-lkp/linux/commits/Douglas-Gilbert/scsi-fix-scsi_cmd-cmd_len/20220411-014001
base:   https://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi.git for-next
:::::: branch date: 3 hours ago
:::::: commit date: 3 hours ago
config: i386-randconfig-m021-20220411 
(https://download.01.org/0day-ci/archive/20220411/202204110445.hwqhxq5y-...@intel.com/config)
compiler: gcc-11 (Debian 11.2.0-19) 11.2.0

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <l...@intel.com>
Reported-by: Dan Carpenter <dan.carpen...@oracle.com>

New smatch warnings:
drivers/ata/libata-scsi.c:2879 ata_scsi_pass_thru() error: buffer overflow 
'cdb' 16 <= 20

Old smatch warnings:
drivers/ata/libata-scsi.c:2880 ata_scsi_pass_thru() error: buffer overflow 
'cdb' 16 <= 22
drivers/ata/libata-scsi.c:2881 ata_scsi_pass_thru() error: buffer overflow 
'cdb' 16 <= 16
drivers/ata/libata-scsi.c:2888 ata_scsi_pass_thru() error: buffer overflow 
'cdb' 16 <= 21
drivers/ata/libata-scsi.c:2889 ata_scsi_pass_thru() error: buffer overflow 
'cdb' 16 <= 23
drivers/ata/libata-scsi.c:2890 ata_scsi_pass_thru() error: buffer overflow 
'cdb' 16 <= 19
drivers/ata/libata-scsi.c:2891 ata_scsi_pass_thru() error: buffer overflow 
'cdb' 16 <= 18
drivers/ata/libata-scsi.c:2892 ata_scsi_pass_thru() error: buffer overflow 
'cdb' 16 <= 17
drivers/ata/libata-scsi.c:2893 ata_scsi_pass_thru() error: buffer overflow 
'cdb' 16 <= 24
drivers/ata/libata-scsi.c:2894 ata_scsi_pass_thru() error: buffer overflow 
'cdb' 16 <= 25
drivers/ata/libata-scsi.c:2895 ata_scsi_pass_thru() error: buffer overflow 
'cdb' 16 <= 28

vim +/cdb +2879 drivers/ata/libata-scsi.c

b095518ef51c37 drivers/scsi/libata-scsi.c Jeff Garzik      2005-05-12  2780  
b095518ef51c37 drivers/scsi/libata-scsi.c Jeff Garzik      2005-05-12  2781  /**
b095518ef51c37 drivers/scsi/libata-scsi.c Jeff Garzik      2005-05-12  2782   * 
ata_scsi_pass_thru - convert ATA pass-thru CDB to taskfile
b095518ef51c37 drivers/scsi/libata-scsi.c Jeff Garzik      2005-05-12  2783   * 
@qc: command structure to be initialized
b095518ef51c37 drivers/scsi/libata-scsi.c Jeff Garzik      2005-05-12  2784   *
b1ffbf854e0887 drivers/ata/libata-scsi.c  Minwoo Im        2017-06-24  2785   * 
Handles either 12, 16, or 32-byte versions of the CDB.
b095518ef51c37 drivers/scsi/libata-scsi.c Jeff Garzik      2005-05-12  2786   *
b095518ef51c37 drivers/scsi/libata-scsi.c Jeff Garzik      2005-05-12  2787   * 
RETURNS:
b095518ef51c37 drivers/scsi/libata-scsi.c Jeff Garzik      2005-05-12  2788   * 
Zero on success, non-zero on failure.
b095518ef51c37 drivers/scsi/libata-scsi.c Jeff Garzik      2005-05-12  2789   */
ad706991f4f0d1 drivers/ata/libata-scsi.c  Tejun Heo        2006-12-17  2790  
static unsigned int ata_scsi_pass_thru(struct ata_queued_cmd *qc)
b095518ef51c37 drivers/scsi/libata-scsi.c Jeff Garzik      2005-05-12  2791  {
b095518ef51c37 drivers/scsi/libata-scsi.c Jeff Garzik      2005-05-12  2792     
struct ata_taskfile *tf = &(qc->tf);
542b1444c5639e drivers/ata/libata-scsi.c  Tejun Heo        2006-12-17  2793     
struct scsi_cmnd *scmd = qc->scsicmd;
f79d409fae879d drivers/scsi/libata-scsi.c Alan Cox         2006-05-22  2794     
struct ata_device *dev = qc->dev;
ad706991f4f0d1 drivers/ata/libata-scsi.c  Tejun Heo        2006-12-17  2795     
const u8 *cdb = scmd->cmnd;
bcfc867d467c98 drivers/ata/libata-scsi.c  Hannes Reinecke  2016-04-04  2796     
u16 fp;
b1ffbf854e0887 drivers/ata/libata-scsi.c  Minwoo Im        2017-06-24  2797     
u16 cdb_offset = 0;
b095518ef51c37 drivers/scsi/libata-scsi.c Jeff Garzik      2005-05-12  2798  
b1ffbf854e0887 drivers/ata/libata-scsi.c  Minwoo Im        2017-06-24  2799     
/* 7Fh variable length cmd means a ata pass-thru(32) */
b1ffbf854e0887 drivers/ata/libata-scsi.c  Minwoo Im        2017-06-24  2800     
if (cdb[0] == VARIABLE_LENGTH_CMD)
b1ffbf854e0887 drivers/ata/libata-scsi.c  Minwoo Im        2017-06-24  2801     
        cdb_offset = 9;
b1ffbf854e0887 drivers/ata/libata-scsi.c  Minwoo Im        2017-06-24  2802  
b1ffbf854e0887 drivers/ata/libata-scsi.c  Minwoo Im        2017-06-24  2803     
tf->protocol = ata_scsi_map_proto(cdb[1 + cdb_offset]);
b1ffbf854e0887 drivers/ata/libata-scsi.c  Minwoo Im        2017-06-24  2804     
if (tf->protocol == ATA_PROT_UNKNOWN) {
bcfc867d467c98 drivers/ata/libata-scsi.c  Hannes Reinecke  2016-04-04  2805     
        fp = 1;
9a40525788a1b6 drivers/scsi/libata-scsi.c Tejun Heo        2005-12-02  2806     
        goto invalid_fld;
bcfc867d467c98 drivers/ata/libata-scsi.c  Hannes Reinecke  2016-04-04  2807     
}
b095518ef51c37 drivers/scsi/libata-scsi.c Jeff Garzik      2005-05-12  2808  
5da5231bb47864 drivers/ata/libata-scsi.c  George Kennedy   2021-12-14  2809     
if ((cdb[2 + cdb_offset] & 0x3) == 0) {
5da5231bb47864 drivers/ata/libata-scsi.c  George Kennedy   2021-12-14  2810     
        /*
5da5231bb47864 drivers/ata/libata-scsi.c  George Kennedy   2021-12-14  2811     
         * When T_LENGTH is zero (No data is transferred), dir should
5da5231bb47864 drivers/ata/libata-scsi.c  George Kennedy   2021-12-14  2812     
         * be DMA_NONE.
5da5231bb47864 drivers/ata/libata-scsi.c  George Kennedy   2021-12-14  2813     
         */
5da5231bb47864 drivers/ata/libata-scsi.c  George Kennedy   2021-12-14  2814     
        if (scmd->sc_data_direction != DMA_NONE) {
5da5231bb47864 drivers/ata/libata-scsi.c  George Kennedy   2021-12-14  2815     
                fp = 2 + cdb_offset;
5da5231bb47864 drivers/ata/libata-scsi.c  George Kennedy   2021-12-14  2816     
                goto invalid_fld;
5da5231bb47864 drivers/ata/libata-scsi.c  George Kennedy   2021-12-14  2817     
        }
5da5231bb47864 drivers/ata/libata-scsi.c  George Kennedy   2021-12-14  2818  
5da5231bb47864 drivers/ata/libata-scsi.c  George Kennedy   2021-12-14  2819     
        if (ata_is_ncq(tf->protocol))
5b844b63ddfb65 drivers/ata/libata-scsi.c  Hannes Reinecke  2016-07-14  2820     
                tf->protocol = ATA_PROT_NCQ_NODATA;
5da5231bb47864 drivers/ata/libata-scsi.c  George Kennedy   2021-12-14  2821     
}
5b844b63ddfb65 drivers/ata/libata-scsi.c  Hannes Reinecke  2016-07-14  2822  
5f8e7f17f6f547 drivers/ata/libata-scsi.c  Vinayak Kale     2015-10-27  2823     
/* enable LBA */
5f8e7f17f6f547 drivers/ata/libata-scsi.c  Vinayak Kale     2015-10-27  2824     
tf->flags |= ATA_TFLAG_LBA;
5f8e7f17f6f547 drivers/ata/libata-scsi.c  Vinayak Kale     2015-10-27  2825  
b095518ef51c37 drivers/scsi/libata-scsi.c Jeff Garzik      2005-05-12  2826     
/*
b095518ef51c37 drivers/scsi/libata-scsi.c Jeff Garzik      2005-05-12  2827     
 * 12 and 16 byte CDBs use different offsets to
b095518ef51c37 drivers/scsi/libata-scsi.c Jeff Garzik      2005-05-12  2828     
 * provide the various register values.
b095518ef51c37 drivers/scsi/libata-scsi.c Jeff Garzik      2005-05-12  2829     
 */
59b0040475ee5d drivers/ata/libata-scsi.c  Sergey Shtylyov  2022-02-14  2830     
switch (cdb[0]) {
59b0040475ee5d drivers/ata/libata-scsi.c  Sergey Shtylyov  2022-02-14  2831     
case ATA_16:
b095518ef51c37 drivers/scsi/libata-scsi.c Jeff Garzik      2005-05-12  2832     
        /*
b095518ef51c37 drivers/scsi/libata-scsi.c Jeff Garzik      2005-05-12  2833     
         * 16-byte CDB - may contain extended commands.
b095518ef51c37 drivers/scsi/libata-scsi.c Jeff Garzik      2005-05-12  2834     
         *
b095518ef51c37 drivers/scsi/libata-scsi.c Jeff Garzik      2005-05-12  2835     
         * If that is the case, copy the upper byte register values.
b095518ef51c37 drivers/scsi/libata-scsi.c Jeff Garzik      2005-05-12  2836     
         */
542b1444c5639e drivers/ata/libata-scsi.c  Tejun Heo        2006-12-17  2837     
        if (cdb[1] & 0x01) {
542b1444c5639e drivers/ata/libata-scsi.c  Tejun Heo        2006-12-17  2838     
                tf->hob_feature = cdb[3];
542b1444c5639e drivers/ata/libata-scsi.c  Tejun Heo        2006-12-17  2839     
                tf->hob_nsect = cdb[5];
542b1444c5639e drivers/ata/libata-scsi.c  Tejun Heo        2006-12-17  2840     
                tf->hob_lbal = cdb[7];
542b1444c5639e drivers/ata/libata-scsi.c  Tejun Heo        2006-12-17  2841     
                tf->hob_lbam = cdb[9];
542b1444c5639e drivers/ata/libata-scsi.c  Tejun Heo        2006-12-17  2842     
                tf->hob_lbah = cdb[11];
b095518ef51c37 drivers/scsi/libata-scsi.c Jeff Garzik      2005-05-12  2843     
                tf->flags |= ATA_TFLAG_LBA48;
b095518ef51c37 drivers/scsi/libata-scsi.c Jeff Garzik      2005-05-12  2844     
        } else
b095518ef51c37 drivers/scsi/libata-scsi.c Jeff Garzik      2005-05-12  2845     
                tf->flags &= ~ATA_TFLAG_LBA48;
b095518ef51c37 drivers/scsi/libata-scsi.c Jeff Garzik      2005-05-12  2846  
b095518ef51c37 drivers/scsi/libata-scsi.c Jeff Garzik      2005-05-12  2847     
        /*
b095518ef51c37 drivers/scsi/libata-scsi.c Jeff Garzik      2005-05-12  2848     
         * Always copy low byte, device and command registers.
b095518ef51c37 drivers/scsi/libata-scsi.c Jeff Garzik      2005-05-12  2849     
         */
542b1444c5639e drivers/ata/libata-scsi.c  Tejun Heo        2006-12-17  2850     
        tf->feature = cdb[4];
542b1444c5639e drivers/ata/libata-scsi.c  Tejun Heo        2006-12-17  2851     
        tf->nsect = cdb[6];
542b1444c5639e drivers/ata/libata-scsi.c  Tejun Heo        2006-12-17  2852     
        tf->lbal = cdb[8];
542b1444c5639e drivers/ata/libata-scsi.c  Tejun Heo        2006-12-17  2853     
        tf->lbam = cdb[10];
542b1444c5639e drivers/ata/libata-scsi.c  Tejun Heo        2006-12-17  2854     
        tf->lbah = cdb[12];
542b1444c5639e drivers/ata/libata-scsi.c  Tejun Heo        2006-12-17  2855     
        tf->device = cdb[13];
542b1444c5639e drivers/ata/libata-scsi.c  Tejun Heo        2006-12-17  2856     
        tf->command = cdb[14];
59b0040475ee5d drivers/ata/libata-scsi.c  Sergey Shtylyov  2022-02-14  2857     
        break;
59b0040475ee5d drivers/ata/libata-scsi.c  Sergey Shtylyov  2022-02-14  2858     
case ATA_12:
b095518ef51c37 drivers/scsi/libata-scsi.c Jeff Garzik      2005-05-12  2859     
        /*
b095518ef51c37 drivers/scsi/libata-scsi.c Jeff Garzik      2005-05-12  2860     
         * 12-byte CDB - incapable of extended commands.
b095518ef51c37 drivers/scsi/libata-scsi.c Jeff Garzik      2005-05-12  2861     
         */
b095518ef51c37 drivers/scsi/libata-scsi.c Jeff Garzik      2005-05-12  2862     
        tf->flags &= ~ATA_TFLAG_LBA48;
b095518ef51c37 drivers/scsi/libata-scsi.c Jeff Garzik      2005-05-12  2863  
542b1444c5639e drivers/ata/libata-scsi.c  Tejun Heo        2006-12-17  2864     
        tf->feature = cdb[3];
542b1444c5639e drivers/ata/libata-scsi.c  Tejun Heo        2006-12-17  2865     
        tf->nsect = cdb[4];
542b1444c5639e drivers/ata/libata-scsi.c  Tejun Heo        2006-12-17  2866     
        tf->lbal = cdb[5];
542b1444c5639e drivers/ata/libata-scsi.c  Tejun Heo        2006-12-17  2867     
        tf->lbam = cdb[6];
542b1444c5639e drivers/ata/libata-scsi.c  Tejun Heo        2006-12-17  2868     
        tf->lbah = cdb[7];
542b1444c5639e drivers/ata/libata-scsi.c  Tejun Heo        2006-12-17  2869     
        tf->device = cdb[8];
542b1444c5639e drivers/ata/libata-scsi.c  Tejun Heo        2006-12-17  2870     
        tf->command = cdb[9];
59b0040475ee5d drivers/ata/libata-scsi.c  Sergey Shtylyov  2022-02-14  2871     
        break;
59b0040475ee5d drivers/ata/libata-scsi.c  Sergey Shtylyov  2022-02-14  2872     
default:
b1ffbf854e0887 drivers/ata/libata-scsi.c  Minwoo Im        2017-06-24  2873     
        /*
b1ffbf854e0887 drivers/ata/libata-scsi.c  Minwoo Im        2017-06-24  2874     
         * 32-byte CDB - may contain extended command fields.
b1ffbf854e0887 drivers/ata/libata-scsi.c  Minwoo Im        2017-06-24  2875     
         *
b1ffbf854e0887 drivers/ata/libata-scsi.c  Minwoo Im        2017-06-24  2876     
         * If that is the case, copy the upper byte register values.
b1ffbf854e0887 drivers/ata/libata-scsi.c  Minwoo Im        2017-06-24  2877     
         */
b1ffbf854e0887 drivers/ata/libata-scsi.c  Minwoo Im        2017-06-24  2878     
        if (cdb[10] & 0x01) {
b1ffbf854e0887 drivers/ata/libata-scsi.c  Minwoo Im        2017-06-24 @2879     
                tf->hob_feature = cdb[20];
b1ffbf854e0887 drivers/ata/libata-scsi.c  Minwoo Im        2017-06-24  2880     
                tf->hob_nsect = cdb[22];
b1ffbf854e0887 drivers/ata/libata-scsi.c  Minwoo Im        2017-06-24  2881     
                tf->hob_lbal = cdb[16];
b1ffbf854e0887 drivers/ata/libata-scsi.c  Minwoo Im        2017-06-24  2882     
                tf->hob_lbam = cdb[15];
b1ffbf854e0887 drivers/ata/libata-scsi.c  Minwoo Im        2017-06-24  2883     
                tf->hob_lbah = cdb[14];
b1ffbf854e0887 drivers/ata/libata-scsi.c  Minwoo Im        2017-06-24  2884     
                tf->flags |= ATA_TFLAG_LBA48;
b1ffbf854e0887 drivers/ata/libata-scsi.c  Minwoo Im        2017-06-24  2885     
        } else
b1ffbf854e0887 drivers/ata/libata-scsi.c  Minwoo Im        2017-06-24  2886     
                tf->flags &= ~ATA_TFLAG_LBA48;
b1ffbf854e0887 drivers/ata/libata-scsi.c  Minwoo Im        2017-06-24  2887  
b1ffbf854e0887 drivers/ata/libata-scsi.c  Minwoo Im        2017-06-24  2888     
        tf->feature = cdb[21];
b1ffbf854e0887 drivers/ata/libata-scsi.c  Minwoo Im        2017-06-24  2889     
        tf->nsect = cdb[23];
b1ffbf854e0887 drivers/ata/libata-scsi.c  Minwoo Im        2017-06-24  2890     
        tf->lbal = cdb[19];
b1ffbf854e0887 drivers/ata/libata-scsi.c  Minwoo Im        2017-06-24  2891     
        tf->lbam = cdb[18];
b1ffbf854e0887 drivers/ata/libata-scsi.c  Minwoo Im        2017-06-24  2892     
        tf->lbah = cdb[17];
b1ffbf854e0887 drivers/ata/libata-scsi.c  Minwoo Im        2017-06-24  2893     
        tf->device = cdb[24];
b1ffbf854e0887 drivers/ata/libata-scsi.c  Minwoo Im        2017-06-24  2894     
        tf->command = cdb[25];
b1ffbf854e0887 drivers/ata/libata-scsi.c  Minwoo Im        2017-06-24  2895     
        tf->auxiliary = get_unaligned_be32(&cdb[28]);
59b0040475ee5d drivers/ata/libata-scsi.c  Sergey Shtylyov  2022-02-14  2896     
        break;
b095518ef51c37 drivers/scsi/libata-scsi.c Jeff Garzik      2005-05-12  2897     
}
fa4453c4c94a61 drivers/ata/libata-scsi.c  Albert Lee       2007-06-07  2898  
179b310ae77ea4 drivers/ata/libata-scsi.c  Hannes Reinecke  2016-07-14  2899     
/* For NCQ commands copy the tag value */
179b310ae77ea4 drivers/ata/libata-scsi.c  Hannes Reinecke  2016-07-14  2900     
if (ata_is_ncq(tf->protocol))
4e5b6260cc9ba8 drivers/ata/libata-scsi.c  Jens Axboe       2018-05-11  2901     
        tf->nsect = qc->hw_tag << 3;
ee7fb331c3ac64 drivers/ata/libata-scsi.c  Vinayak Kale     2015-10-27  2902  
fa4453c4c94a61 drivers/ata/libata-scsi.c  Albert Lee       2007-06-07  2903     
/* enforce correct master/slave bit */
fa4453c4c94a61 drivers/ata/libata-scsi.c  Albert Lee       2007-06-07  2904     
tf->device = dev->devno ?
dcc2d1e7f0acf7 drivers/scsi/libata-scsi.c Mark Lord        2005-11-13  2905     
        tf->device | ATA_DEV1 : tf->device & ~ATA_DEV1;
b095518ef51c37 drivers/scsi/libata-scsi.c Jeff Garzik      2005-05-12  2906  
bd30add88cea83 drivers/ata/libata-scsi.c  Tejun Heo        2009-09-03  2907     
switch (tf->command) {
295124dce4ddfd drivers/ata/libata-scsi.c  Grant Grundler   2010-08-17  2908     
/* READ/WRITE LONG use a non-standard sect_size */
bd30add88cea83 drivers/ata/libata-scsi.c  Tejun Heo        2009-09-03  2909     
case ATA_CMD_READ_LONG:
bd30add88cea83 drivers/ata/libata-scsi.c  Tejun Heo        2009-09-03  2910     
case ATA_CMD_READ_LONG_ONCE:
bd30add88cea83 drivers/ata/libata-scsi.c  Tejun Heo        2009-09-03  2911     
case ATA_CMD_WRITE_LONG:
bd30add88cea83 drivers/ata/libata-scsi.c  Tejun Heo        2009-09-03  2912     
case ATA_CMD_WRITE_LONG_ONCE:
bcfc867d467c98 drivers/ata/libata-scsi.c  Hannes Reinecke  2016-04-04  2913     
        if (tf->protocol != ATA_PROT_PIO || tf->nsect != 1) {
bcfc867d467c98 drivers/ata/libata-scsi.c  Hannes Reinecke  2016-04-04  2914     
                fp = 1;
bd30add88cea83 drivers/ata/libata-scsi.c  Tejun Heo        2009-09-03  2915     
                goto invalid_fld;
bcfc867d467c98 drivers/ata/libata-scsi.c  Hannes Reinecke  2016-04-04  2916     
        }
bd30add88cea83 drivers/ata/libata-scsi.c  Tejun Heo        2009-09-03  2917     
        qc->sect_size = scsi_bufflen(scmd);
295124dce4ddfd drivers/ata/libata-scsi.c  Grant Grundler   2010-08-17  2918     
        break;
295124dce4ddfd drivers/ata/libata-scsi.c  Grant Grundler   2010-08-17  2919  
295124dce4ddfd drivers/ata/libata-scsi.c  Grant Grundler   2010-08-17  2920     
/* commands using reported Logical Block size (e.g. 512 or 4K) */
295124dce4ddfd drivers/ata/libata-scsi.c  Grant Grundler   2010-08-17  2921     
case ATA_CMD_CFA_WRITE_NE:
295124dce4ddfd drivers/ata/libata-scsi.c  Grant Grundler   2010-08-17  2922     
case ATA_CMD_CFA_TRANS_SECT:
295124dce4ddfd drivers/ata/libata-scsi.c  Grant Grundler   2010-08-17  2923     
case ATA_CMD_CFA_WRITE_MULT_NE:
295124dce4ddfd drivers/ata/libata-scsi.c  Grant Grundler   2010-08-17  2924     
/* XXX: case ATA_CMD_CFA_WRITE_SECTORS_WITHOUT_ERASE: */
295124dce4ddfd drivers/ata/libata-scsi.c  Grant Grundler   2010-08-17  2925     
case ATA_CMD_READ:
295124dce4ddfd drivers/ata/libata-scsi.c  Grant Grundler   2010-08-17  2926     
case ATA_CMD_READ_EXT:
295124dce4ddfd drivers/ata/libata-scsi.c  Grant Grundler   2010-08-17  2927     
case ATA_CMD_READ_QUEUED:
295124dce4ddfd drivers/ata/libata-scsi.c  Grant Grundler   2010-08-17  2928     
/* XXX: case ATA_CMD_READ_QUEUED_EXT: */
295124dce4ddfd drivers/ata/libata-scsi.c  Grant Grundler   2010-08-17  2929     
case ATA_CMD_FPDMA_READ:
295124dce4ddfd drivers/ata/libata-scsi.c  Grant Grundler   2010-08-17  2930     
case ATA_CMD_READ_MULTI:
295124dce4ddfd drivers/ata/libata-scsi.c  Grant Grundler   2010-08-17  2931     
case ATA_CMD_READ_MULTI_EXT:
295124dce4ddfd drivers/ata/libata-scsi.c  Grant Grundler   2010-08-17  2932     
case ATA_CMD_PIO_READ:
295124dce4ddfd drivers/ata/libata-scsi.c  Grant Grundler   2010-08-17  2933     
case ATA_CMD_PIO_READ_EXT:
295124dce4ddfd drivers/ata/libata-scsi.c  Grant Grundler   2010-08-17  2934     
case ATA_CMD_READ_STREAM_DMA_EXT:
295124dce4ddfd drivers/ata/libata-scsi.c  Grant Grundler   2010-08-17  2935     
case ATA_CMD_READ_STREAM_EXT:
295124dce4ddfd drivers/ata/libata-scsi.c  Grant Grundler   2010-08-17  2936     
case ATA_CMD_VERIFY:
295124dce4ddfd drivers/ata/libata-scsi.c  Grant Grundler   2010-08-17  2937     
case ATA_CMD_VERIFY_EXT:
295124dce4ddfd drivers/ata/libata-scsi.c  Grant Grundler   2010-08-17  2938     
case ATA_CMD_WRITE:
295124dce4ddfd drivers/ata/libata-scsi.c  Grant Grundler   2010-08-17  2939     
case ATA_CMD_WRITE_EXT:
295124dce4ddfd drivers/ata/libata-scsi.c  Grant Grundler   2010-08-17  2940     
case ATA_CMD_WRITE_FUA_EXT:
295124dce4ddfd drivers/ata/libata-scsi.c  Grant Grundler   2010-08-17  2941     
case ATA_CMD_WRITE_QUEUED:
295124dce4ddfd drivers/ata/libata-scsi.c  Grant Grundler   2010-08-17  2942     
case ATA_CMD_WRITE_QUEUED_FUA_EXT:
295124dce4ddfd drivers/ata/libata-scsi.c  Grant Grundler   2010-08-17  2943     
case ATA_CMD_FPDMA_WRITE:
295124dce4ddfd drivers/ata/libata-scsi.c  Grant Grundler   2010-08-17  2944     
case ATA_CMD_WRITE_MULTI:
295124dce4ddfd drivers/ata/libata-scsi.c  Grant Grundler   2010-08-17  2945     
case ATA_CMD_WRITE_MULTI_EXT:
295124dce4ddfd drivers/ata/libata-scsi.c  Grant Grundler   2010-08-17  2946     
case ATA_CMD_WRITE_MULTI_FUA_EXT:
295124dce4ddfd drivers/ata/libata-scsi.c  Grant Grundler   2010-08-17  2947     
case ATA_CMD_PIO_WRITE:
295124dce4ddfd drivers/ata/libata-scsi.c  Grant Grundler   2010-08-17  2948     
case ATA_CMD_PIO_WRITE_EXT:
295124dce4ddfd drivers/ata/libata-scsi.c  Grant Grundler   2010-08-17  2949     
case ATA_CMD_WRITE_STREAM_DMA_EXT:
295124dce4ddfd drivers/ata/libata-scsi.c  Grant Grundler   2010-08-17  2950     
case ATA_CMD_WRITE_STREAM_EXT:
295124dce4ddfd drivers/ata/libata-scsi.c  Grant Grundler   2010-08-17  2951     
        qc->sect_size = scmd->device->sector_size;
295124dce4ddfd drivers/ata/libata-scsi.c  Grant Grundler   2010-08-17  2952     
        break;
295124dce4ddfd drivers/ata/libata-scsi.c  Grant Grundler   2010-08-17  2953  
295124dce4ddfd drivers/ata/libata-scsi.c  Grant Grundler   2010-08-17  2954     
/* Everything else uses 512 byte "sectors" */
295124dce4ddfd drivers/ata/libata-scsi.c  Grant Grundler   2010-08-17  2955     
default:
295124dce4ddfd drivers/ata/libata-scsi.c  Grant Grundler   2010-08-17  2956     
        qc->sect_size = ATA_SECT_SIZE;
bd30add88cea83 drivers/ata/libata-scsi.c  Tejun Heo        2009-09-03  2957     
}
bd30add88cea83 drivers/ata/libata-scsi.c  Tejun Heo        2009-09-03  2958  
bd30add88cea83 drivers/ata/libata-scsi.c  Tejun Heo        2009-09-03  2959     
/*
bd30add88cea83 drivers/ata/libata-scsi.c  Tejun Heo        2009-09-03  2960     
 * Set flags so that all registers will be written, pass on
bd30add88cea83 drivers/ata/libata-scsi.c  Tejun Heo        2009-09-03  2961     
 * write indication (used for PIO/DMA setup), result TF is
bd30add88cea83 drivers/ata/libata-scsi.c  Tejun Heo        2009-09-03  2962     
 * copied back and we don't whine too much about its failure.
bd30add88cea83 drivers/ata/libata-scsi.c  Tejun Heo        2009-09-03  2963     
 */
bc496ed00ab141 drivers/ata/libata-scsi.c  Douglas Gilbert  2010-02-01  2964     
tf->flags |= ATA_TFLAG_ISADDR | ATA_TFLAG_DEVICE;
bd30add88cea83 drivers/ata/libata-scsi.c  Tejun Heo        2009-09-03  2965     
if (scmd->sc_data_direction == DMA_TO_DEVICE)
bd30add88cea83 drivers/ata/libata-scsi.c  Tejun Heo        2009-09-03  2966     
        tf->flags |= ATA_TFLAG_WRITE;
bd30add88cea83 drivers/ata/libata-scsi.c  Tejun Heo        2009-09-03  2967  
bd30add88cea83 drivers/ata/libata-scsi.c  Tejun Heo        2009-09-03  2968     
qc->flags |= ATA_QCFLAG_RESULT_TF | ATA_QCFLAG_QUIET;
bd30add88cea83 drivers/ata/libata-scsi.c  Tejun Heo        2009-09-03  2969  
bd30add88cea83 drivers/ata/libata-scsi.c  Tejun Heo        2009-09-03  2970     
/*
bd30add88cea83 drivers/ata/libata-scsi.c  Tejun Heo        2009-09-03  2971     
 * Set transfer length.
bd30add88cea83 drivers/ata/libata-scsi.c  Tejun Heo        2009-09-03  2972     
 *
bd30add88cea83 drivers/ata/libata-scsi.c  Tejun Heo        2009-09-03  2973     
 * TODO: find out if we need to do more here to
bd30add88cea83 drivers/ata/libata-scsi.c  Tejun Heo        2009-09-03  2974     
 *       cover scatter/gather case.
bd30add88cea83 drivers/ata/libata-scsi.c  Tejun Heo        2009-09-03  2975     
 */
bd30add88cea83 drivers/ata/libata-scsi.c  Tejun Heo        2009-09-03  2976     
ata_qc_set_pc_nbytes(qc);
bd30add88cea83 drivers/ata/libata-scsi.c  Tejun Heo        2009-09-03  2977  
bd30add88cea83 drivers/ata/libata-scsi.c  Tejun Heo        2009-09-03  2978     
/* We may not issue DMA commands if no DMA mode is set */
6ac586f2e71692 drivers/ata/libata-scsi.c  Reimar Döffinger 2021-10-12  2979     
if (tf->protocol == ATA_PROT_DMA && !ata_dma_enabled(dev)) {
bcfc867d467c98 drivers/ata/libata-scsi.c  Hannes Reinecke  2016-04-04  2980     
        fp = 1;
bd30add88cea83 drivers/ata/libata-scsi.c  Tejun Heo        2009-09-03  2981     
        goto invalid_fld;
2c1ec6fda2d070 drivers/ata/libata-scsi.c  Eric Biggers     2018-02-03  2982     
}
2c1ec6fda2d070 drivers/ata/libata-scsi.c  Eric Biggers     2018-02-03  2983  
2c1ec6fda2d070 drivers/ata/libata-scsi.c  Eric Biggers     2018-02-03  2984     
/* We may not issue NCQ commands to devices not supporting NCQ */
2c1ec6fda2d070 drivers/ata/libata-scsi.c  Eric Biggers     2018-02-03  2985     
if (ata_is_ncq(tf->protocol) && !ata_ncq_enabled(dev)) {
2c1ec6fda2d070 drivers/ata/libata-scsi.c  Eric Biggers     2018-02-03  2986     
        fp = 1;
2c1ec6fda2d070 drivers/ata/libata-scsi.c  Eric Biggers     2018-02-03  2987     
        goto invalid_fld;
bcfc867d467c98 drivers/ata/libata-scsi.c  Hannes Reinecke  2016-04-04  2988     
}
bd30add88cea83 drivers/ata/libata-scsi.c  Tejun Heo        2009-09-03  2989  
1dce589c38c36a drivers/ata/libata-scsi.c  Albert Lee       2007-06-07  2990     
/* sanity check for pio multi commands */
bcfc867d467c98 drivers/ata/libata-scsi.c  Hannes Reinecke  2016-04-04  2991     
if ((cdb[1] & 0xe0) && !is_multi_taskfile(tf)) {
bcfc867d467c98 drivers/ata/libata-scsi.c  Hannes Reinecke  2016-04-04  2992     
        fp = 1;
1dce589c38c36a drivers/ata/libata-scsi.c  Albert Lee       2007-06-07  2993     
        goto invalid_fld;
bcfc867d467c98 drivers/ata/libata-scsi.c  Hannes Reinecke  2016-04-04  2994     
}
1dce589c38c36a drivers/ata/libata-scsi.c  Albert Lee       2007-06-07  2995  
1dce589c38c36a drivers/ata/libata-scsi.c  Albert Lee       2007-06-07  2996     
if (is_multi_taskfile(tf)) {
1dce589c38c36a drivers/ata/libata-scsi.c  Albert Lee       2007-06-07  2997     
        unsigned int multi_count = 1 << (cdb[1] >> 5);
1dce589c38c36a drivers/ata/libata-scsi.c  Albert Lee       2007-06-07  2998  
1dce589c38c36a drivers/ata/libata-scsi.c  Albert Lee       2007-06-07  2999     
        /* compare the passed through multi_count
1dce589c38c36a drivers/ata/libata-scsi.c  Albert Lee       2007-06-07  3000     
         * with the cached multi_count of libata
1dce589c38c36a drivers/ata/libata-scsi.c  Albert Lee       2007-06-07  3001     
         */
1dce589c38c36a drivers/ata/libata-scsi.c  Albert Lee       2007-06-07  3002     
        if (multi_count != dev->multi_count)
a9a79dfec23956 drivers/ata/libata-scsi.c  Joe Perches      2011-04-15  3003     
                ata_dev_warn(dev, "invalid multi_count %u ignored\n",
1dce589c38c36a drivers/ata/libata-scsi.c  Albert Lee       2007-06-07  3004     
                             multi_count);
1dce589c38c36a drivers/ata/libata-scsi.c  Albert Lee       2007-06-07  3005     
}
1dce589c38c36a drivers/ata/libata-scsi.c  Albert Lee       2007-06-07  3006  
b095518ef51c37 drivers/scsi/libata-scsi.c Jeff Garzik      2005-05-12  3007     
/*
b095518ef51c37 drivers/scsi/libata-scsi.c Jeff Garzik      2005-05-12  3008     
 * Filter SET_FEATURES - XFER MODE command -- otherwise,
b095518ef51c37 drivers/scsi/libata-scsi.c Jeff Garzik      2005-05-12  3009     
 * SET_FEATURES - XFER MODE must be preceded/succeeded
b095518ef51c37 drivers/scsi/libata-scsi.c Jeff Garzik      2005-05-12  3010     
 * by an update to hardware-specific registers for each
b095518ef51c37 drivers/scsi/libata-scsi.c Jeff Garzik      2005-05-12  3011     
 * controller (i.e. the reason for ->set_piomode(),
b095518ef51c37 drivers/scsi/libata-scsi.c Jeff Garzik      2005-05-12  3012     
 * ->set_dmamode(), and ->post_set_mode() hooks).
b095518ef51c37 drivers/scsi/libata-scsi.c Jeff Garzik      2005-05-12  3013     
 */
bd30add88cea83 drivers/ata/libata-scsi.c  Tejun Heo        2009-09-03  3014     
if (tf->command == ATA_CMD_SET_FEATURES &&
bcfc867d467c98 drivers/ata/libata-scsi.c  Hannes Reinecke  2016-04-04  3015     
    tf->feature == SETFEATURES_XFER) {
bcfc867d467c98 drivers/ata/libata-scsi.c  Hannes Reinecke  2016-04-04  3016     
        fp = (cdb[0] == ATA_16) ? 4 : 3;
9a40525788a1b6 drivers/scsi/libata-scsi.c Tejun Heo        2005-12-02  3017     
        goto invalid_fld;
bcfc867d467c98 drivers/ata/libata-scsi.c  Hannes Reinecke  2016-04-04  3018     
}
b095518ef51c37 drivers/scsi/libata-scsi.c Jeff Garzik      2005-05-12  3019  
b095518ef51c37 drivers/scsi/libata-scsi.c Jeff Garzik      2005-05-12  3020     
/*
bd30add88cea83 drivers/ata/libata-scsi.c  Tejun Heo        2009-09-03  3021     
 * Filter TPM commands by default. These provide an
bd30add88cea83 drivers/ata/libata-scsi.c  Tejun Heo        2009-09-03  3022     
 * essentially uncontrolled encrypted "back door" between
bd30add88cea83 drivers/ata/libata-scsi.c  Tejun Heo        2009-09-03  3023     
 * applications and the disk. Set libata.allow_tpm=1 if you
bd30add88cea83 drivers/ata/libata-scsi.c  Tejun Heo        2009-09-03  3024     
 * have a real reason for wanting to use them. This ensures
bd30add88cea83 drivers/ata/libata-scsi.c  Tejun Heo        2009-09-03  3025     
 * that installed software cannot easily mess stuff up without
bd30add88cea83 drivers/ata/libata-scsi.c  Tejun Heo        2009-09-03  3026     
 * user intent. DVR type users will probably ship with this enabled
bd30add88cea83 drivers/ata/libata-scsi.c  Tejun Heo        2009-09-03  3027     
 * for movie content management.
b095518ef51c37 drivers/scsi/libata-scsi.c Jeff Garzik      2005-05-12  3028     
 *
bd30add88cea83 drivers/ata/libata-scsi.c  Tejun Heo        2009-09-03  3029     
 * Note that for ATA8 we can issue a DCS change and DCS freeze lock
bd30add88cea83 drivers/ata/libata-scsi.c  Tejun Heo        2009-09-03  3030     
 * for this and should do in future but that it is not sufficient as
bd30add88cea83 drivers/ata/libata-scsi.c  Tejun Heo        2009-09-03  3031     
 * DCS is an optional feature set. Thus we also do the software filter
bd30add88cea83 drivers/ata/libata-scsi.c  Tejun Heo        2009-09-03  3032     
 * so that we comply with the TC consortium stated goal that the user
bd30add88cea83 drivers/ata/libata-scsi.c  Tejun Heo        2009-09-03  3033     
 * can turn off TC features of their system.
b095518ef51c37 drivers/scsi/libata-scsi.c Jeff Garzik      2005-05-12  3034     
 */
bcfc867d467c98 drivers/ata/libata-scsi.c  Hannes Reinecke  2016-04-04  3035     
if (tf->command >= 0x5C && tf->command <= 0x5F && !libata_allow_tpm) {
bcfc867d467c98 drivers/ata/libata-scsi.c  Hannes Reinecke  2016-04-04  3036     
        fp = (cdb[0] == ATA_16) ? 14 : 9;
bd30add88cea83 drivers/ata/libata-scsi.c  Tejun Heo        2009-09-03  3037     
        goto invalid_fld;
bcfc867d467c98 drivers/ata/libata-scsi.c  Hannes Reinecke  2016-04-04  3038     
}
e61e067227bc76 drivers/scsi/libata-scsi.c Tejun Heo        2006-05-15  3039  
b095518ef51c37 drivers/scsi/libata-scsi.c Jeff Garzik      2005-05-12  3040     
return 0;
9a40525788a1b6 drivers/scsi/libata-scsi.c Tejun Heo        2005-12-02  3041  
9a40525788a1b6 drivers/scsi/libata-scsi.c Tejun Heo        2005-12-02  3042   
invalid_fld:
0df10b84af88a4 drivers/ata/libata-scsi.c  Hannes Reinecke  2016-04-04  3043     
ata_scsi_set_invalid_field(dev, scmd, fp, 0xff);
9a40525788a1b6 drivers/scsi/libata-scsi.c Tejun Heo        2005-12-02  3044     
return 1;
b095518ef51c37 drivers/scsi/libata-scsi.c Jeff Garzik      2005-05-12  3045  }
b095518ef51c37 drivers/scsi/libata-scsi.c Jeff Garzik      2005-05-12  3046  

-- 
0-DAY CI Kernel Test Service
https://01.org/lkp
_______________________________________________
kbuild mailing list -- kbuild@lists.01.org
To unsubscribe send an email to kbuild-le...@lists.01.org

Reply via email to