@@ -1077,17 +1077,17 @@ static struct purex_item *
10771077qla24xx_alloc_purex_item (scsi_qla_host_t * vha , uint16_t size )
10781078{
10791079 struct purex_item * item = NULL ;
1080+ uint8_t item_hdr_size = sizeof (* item );
10801081
10811082 if (size > QLA_DEFAULT_PAYLOAD_SIZE ) {
1082- item = kzalloc (struct_size (item , iocb , size ), GFP_ATOMIC );
1083+ item = kzalloc (item_hdr_size +
1084+ (size - QLA_DEFAULT_PAYLOAD_SIZE ), GFP_ATOMIC );
10831085 } else {
10841086 if (atomic_inc_return (& vha -> default_item .in_use ) == 1 ) {
10851087 item = & vha -> default_item ;
10861088 goto initialize_purex_header ;
10871089 } else {
1088- item = kzalloc (
1089- struct_size (item , iocb , QLA_DEFAULT_PAYLOAD_SIZE ),
1090- GFP_ATOMIC );
1090+ item = kzalloc (item_hdr_size , GFP_ATOMIC );
10911091 }
10921092 }
10931093 if (!item ) {
@@ -1127,16 +1127,17 @@ qla24xx_queue_purex_item(scsi_qla_host_t *vha, struct purex_item *pkt,
11271127 * @vha: SCSI driver HA context
11281128 * @pkt: ELS packet
11291129 */
1130- static struct purex_item *
1131- qla24xx_copy_std_pkt (struct scsi_qla_host * vha , void * pkt )
1130+ static struct purex_item
1131+ * qla24xx_copy_std_pkt (struct scsi_qla_host * vha , void * pkt )
11321132{
11331133 struct purex_item * item ;
11341134
1135- item = qla24xx_alloc_purex_item (vha , QLA_DEFAULT_PAYLOAD_SIZE );
1135+ item = qla24xx_alloc_purex_item (vha ,
1136+ QLA_DEFAULT_PAYLOAD_SIZE );
11361137 if (!item )
11371138 return item ;
11381139
1139- memcpy (& item -> iocb , pkt , QLA_DEFAULT_PAYLOAD_SIZE );
1140+ memcpy (& item -> iocb , pkt , sizeof ( item -> iocb ) );
11401141 return item ;
11411142}
11421143
0 commit comments