Print this page
4031 scsa1394 violates DDI scsi_pkt(9S) allocation rules

@@ -24,12 +24,10 @@
  */
 
 #ifndef _SYS_1394_TARGETS_SCSA1394_CMD_H
 #define _SYS_1394_TARGETS_SCSA1394_CMD_H
 
-#pragma ident   "%Z%%M% %I%     %E% SMI"
-
 /*
  * scsa1394 command
  */
 
 #include <sys/scsi/scsi_types.h>

@@ -38,18 +36,10 @@
 
 #ifdef  __cplusplus
 extern "C" {
 #endif
 
-/* preferred pkt_private length in 64-bit quantities */
-#ifdef  _LP64
-#define SCSA1394_CMD_PRIV_SIZE  2
-#else /* _ILP32 */
-#define SCSA1394_CMD_PRIV_SIZE  1
-#endif
-#define SCSA1394_CMD_PRIV_LEN   (SCSA1394_CMD_PRIV_SIZE * sizeof (uint64_t))
-
 /* entry describing a page table segment */
 typedef struct scsa1394_cmd_seg {
         size_t                  ss_len;
         uint64_t                ss_daddr;
         uint64_t                ss_baddr;

@@ -62,18 +52,11 @@
         struct scsa1394_lun     *sc_lun;        /* lun it belongs to */
         int                     sc_state;       /* command state */
         int                     sc_flags;       /* command flags */
         struct buf              *sc_bp;         /* data buffer */
         struct scsi_pkt         *sc_pkt;        /* corresponding scsi pkt */
-        size_t                  sc_cdb_len;
-        size_t                  sc_cdb_actual_len;
-        size_t                  sc_scb_len;
-        size_t                  sc_priv_len;
-        uchar_t                 sc_cdb[SCSI_CDB_SIZE];
-        uchar_t                 sc_pkt_cdb[SCSI_CDB_SIZE];
-        struct scsi_arq_status  sc_scb;
-        uint64_t                sc_priv[SCSA1394_CMD_PRIV_SIZE];
+        size_t                  sc_orig_cdblen;
         clock_t                 sc_start_time;
         int                     sc_timeout;
 
         /* DMA: command ORB */
         ddi_dma_handle_t        sc_orb_dma_hdl;

@@ -107,23 +90,17 @@
         /* for symbios mode only */
         int                     sc_lba;         /* start LBA */
         int                     sc_blk_size;    /* xfer block size */
         size_t                  sc_total_blks;  /* total xfer blocks */
         size_t                  sc_resid_blks;  /* blocks left */
-
-        struct scsi_pkt         sc_scsi_pkt;    /* must be last */
-                                                /* embedded SCSI packet */
-                                                /* ... scsi_pkt_size() */
 } scsa1394_cmd_t;
-#define SCSA1394_CMD_SIZE       (sizeof (struct scsa1394_cmd) - \
-                                sizeof (struct scsi_pkt) + scsi_pkt_size())
 
 _NOTE(SCHEME_PROTECTS_DATA("unique per task", { scsa1394_cmd scsa1394_cmd_seg
     scsi_pkt scsi_inquiry scsi_extended_sense scsi_cdb scsi_arq_status }))
 
 #define PKT2CMD(pktp)   ((scsa1394_cmd_t *)((pktp)->pkt_ha_private))
-#define CMD2PKT(cmdp)   ((struct scsi_pkt *)((cmdp)->sc_pkt))
+#define CMD2PKT(cmdp)   ((cmdp)->sc_pkt)
 #define TASK2CMD(task)  ((scsa1394_cmd_t *)(task)->ts_drv_priv)
 #define CMD2TASK(cmdp)  ((sbp2_task_t *)&(cmdp)->sc_task)
 
 /* state */
 enum {

@@ -132,17 +109,10 @@
         SCSA1394_CMD_STATUS
 };
 
 /* flags */
 enum {
-        SCSA1394_CMD_CDB_EXT            = 0x0001,
-        SCSA1394_CMD_PRIV_EXT           = 0x0002,
-        SCSA1394_CMD_SCB_EXT            = 0x0004,
-        SCSA1394_CMD_EXT                = (SCSA1394_CMD_CDB_EXT |
-                                            SCSA1394_CMD_PRIV_EXT |
-                                            SCSA1394_CMD_SCB_EXT),
-
         SCSA1394_CMD_DMA_CDB_VALID      = 0x0008,
         SCSA1394_CMD_DMA_BUF_BIND_VALID = 0x0010,
         SCSA1394_CMD_DMA_BUF_PT_VALID   = 0x0020,
         SCSA1394_CMD_DMA_BUF_ADDR_VALID = 0x0040,
         SCSA1394_CMD_DMA_BUF_VALID      = (SCSA1394_CMD_DMA_BUF_BIND_VALID |