Merge tag 'scsi-misc' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi
[linux-block.git] / drivers / scsi / megaraid / megaraid_sas_base.c
index f6c37a97544ea838ef8274f903f2feba83162f50..9be4ba61a076ccff196692b6b50350e6ee6b127b 100644 (file)
@@ -3174,7 +3174,7 @@ megasas_bios_param(struct scsi_device *sdev, struct block_device *bdev,
        return 0;
 }
 
-static int megasas_map_queues(struct Scsi_Host *shost)
+static void megasas_map_queues(struct Scsi_Host *shost)
 {
        struct megasas_instance *instance;
        int qoff = 0, offset;
@@ -3183,7 +3183,7 @@ static int megasas_map_queues(struct Scsi_Host *shost)
        instance = (struct megasas_instance *)shost->hostdata;
 
        if (shost->nr_hw_queues == 1)
-               return 0;
+               return;
 
        offset = instance->low_latency_index_start;
 
@@ -3209,8 +3209,6 @@ static int megasas_map_queues(struct Scsi_Host *shost)
                map->queue_offset = qoff;
                blk_mq_map_queues(map);
        }
-
-       return 0;
 }
 
 static void megasas_aen_polling(struct work_struct *work);
@@ -4023,10 +4021,8 @@ megasas_deplete_reply_queue(struct megasas_instance *instance,
        u32 mfiStatus;
        u32 fw_state;
 
-       if ((mfiStatus = instance->instancet->check_reset(instance,
-                                       instance->reg_set)) == 1) {
+       if (instance->instancet->check_reset(instance, instance->reg_set) == 1)
                return IRQ_HANDLED;
-       }
 
        mfiStatus = instance->instancet->clear_intr(instance);
        if (mfiStatus == 0) {
@@ -5157,9 +5153,9 @@ static void megasas_update_ext_vd_details(struct megasas_instance *instance)
                fusion->current_map_sz = ventura_map_sz;
                fusion->max_map_sz = ventura_map_sz;
        } else {
-               fusion->old_map_sz =  sizeof(struct MR_FW_RAID_MAP) +
-                                       (sizeof(struct MR_LD_SPAN_MAP) *
-                                       (instance->fw_supported_vd_count - 1));
+               fusion->old_map_sz =
+                       struct_size((struct MR_FW_RAID_MAP *)0, ldSpanMap,
+                                   instance->fw_supported_vd_count);
                fusion->new_map_sz =  sizeof(struct MR_FW_RAID_MAP_EXT);
 
                fusion->max_map_sz =
@@ -5792,10 +5788,10 @@ megasas_setup_jbod_map(struct megasas_instance *instance)
 {
        int i;
        struct fusion_context *fusion = instance->ctrl_context;
-       u32 pd_seq_map_sz;
+       size_t pd_seq_map_sz;
 
-       pd_seq_map_sz = sizeof(struct MR_PD_CFG_SEQ_NUM_SYNC) +
-               (sizeof(struct MR_PD_CFG_SEQ) * (MAX_PHYSICAL_DEVICES - 1));
+       pd_seq_map_sz = struct_size((struct MR_PD_CFG_SEQ_NUM_SYNC *)0, seq,
+                                   MAX_PHYSICAL_DEVICES);
 
        instance->use_seqnum_jbod_fp =
                instance->support_seqnum_jbod_fp;
@@ -7970,7 +7966,7 @@ static void megasas_detach_one(struct pci_dev *pdev)
        struct Scsi_Host *host;
        struct megasas_instance *instance;
        struct fusion_context *fusion;
-       u32 pd_seq_map_sz;
+       size_t pd_seq_map_sz;
 
        instance = pci_get_drvdata(pdev);
 
@@ -8042,9 +8038,9 @@ skip_firing_dcmds:
 
        if (instance->adapter_type != MFI_SERIES) {
                megasas_release_fusion(instance);
-               pd_seq_map_sz = sizeof(struct MR_PD_CFG_SEQ_NUM_SYNC) +
-                               (sizeof(struct MR_PD_CFG_SEQ) *
-                                       (MAX_PHYSICAL_DEVICES - 1));
+               pd_seq_map_sz =
+                       struct_size((struct MR_PD_CFG_SEQ_NUM_SYNC *)0,
+                                   seq, MAX_PHYSICAL_DEVICES);
                for (i = 0; i < 2 ; i++) {
                        if (fusion->ld_map[i])
                                dma_free_coherent(&instance->pdev->dev,