Le 10/03/2020 à 14:08, Chen Qun a écrit :
> Here are some redundant statements, we can clean them up.
> Clang static code analyzer show warning:
> hw/scsi/megasas.c:1175:32: warning: Value stored to 'max_ld_disks' during its 
> initialization is never read
>     uint32_t num_ld_disks = 0, max_ld_disks = s->fw_luns;
>                                ^~~~~~~~~~~~   ~~~~~~~~~~
> hw/scsi/megasas.c:1183:9: warning: Value stored to 'max_ld_disks' is never 
> read
>         max_ld_disks = 0;
>         ^              ~

This has been introduced by:

d97ae3684863 ("megasas: fixup MFI_DCMD_LD_LIST_QUERY")

And modified by:

commit 3f2cd4dd47719497540fb0e0aa0635e127f2838f
Author: Hannes Reinecke <[email protected]>
Date:   Wed Oct 29 13:00:07 2014 +0100

    megasas: fixup device mapping

    Logical drives can only be addressed with the 'target_id' number;
    LUN numbers cannot be selected.
    Physical drives can be selected with both, target and LUN id.

    So we should disallow LUN numbers not equal to 0 when in
    RAID mode.

    Signed-off-by: Hannes Reinecke <[email protected]>
    Signed-off-by: Paolo Bonzini <[email protected]>
...
@@ -1143,10 +1152,13 @@ static int
megasas_dcmd_ld_list_query(MegasasState *s, MegasasCmd *cmd)
         return MFI_STAT_INVALID_PARAMETER;
     }
     dcmd_size = sizeof(uint32_t) * 2 + 3;
-
+    max_ld_disks = cmd->iov_size - dcmd_size;
     if (megasas_is_jbod(s)) {
         max_ld_disks = 0;
     }
+    if (max_ld_disks > MFI_MAX_LD) {
+        max_ld_disks = MFI_MAX_LD;
+    }
     QTAILQ_FOREACH(kid, &s->bus.qbus.children, sibling) {
         SCSIDevice *sdev = DO_UPCAST(SCSIDevice, qdev, kid->child);
...


Thanks,
Laurent

Reply via email to