linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* netxen: mask issue with redundant cases in a switch statement
@ 2021-07-30 10:18 Colin Ian King
  0 siblings, 0 replies; only message in thread
From: Colin Ian King @ 2021-07-30 10:18 UTC (permalink / raw)
  To: Manish Chopra, Rahul Verma, GR-Linux-NIC-Dev
  Cc: David S. Miller, Jakub Kicinski, netdev, linux-kernel

Hi,

Static analysis with Coverity has found an issue in with redundant
deadcode in some cases in a switch statement in
drivers/net/ethernet/qlogic/netxen/netxen_nic_main.c introduced with the
following commit:

commit d612698b6246032370b96abc9afe94c8a66772c2
Author: Sucheta Chakraborty <sucheta.chakraborty@qlogic.com>
Date:   Wed May 9 05:55:29 2012 +0000

    netxen: added miniDIMM support in driver.

The analysis is as follows:

3000        dw = NETXEN_DIMM_DATAWIDTH(val);
3001
3002        dimm.presence = (val & NETXEN_DIMM_PRESENT);
3003
3004        /* Checks if DIMM info is present. */
3005        if (!dimm.presence) {
3006                netdev_err(netdev, "DIMM not present\n");
3007                goto out;
3008        }
3009
3010        dimm.dimm_type = NETXEN_DIMM_TYPE(val);
3011
3012        switch (dimm.dimm_type) {
3013        case NETXEN_DIMM_TYPE_RDIMM:
3014        case NETXEN_DIMM_TYPE_UDIMM:
3015        case NETXEN_DIMM_TYPE_SO_DIMM:
3016        case NETXEN_DIMM_TYPE_Micro_DIMM:
3017        case NETXEN_DIMM_TYPE_Mini_RDIMM:
3018        case NETXEN_DIMM_TYPE_Mini_UDIMM:
3019                break;
3020        default:
3021                netdev_err(netdev, "Invalid DIMM type %x\n",
dimm.dimm_type);
3022                goto out;
3023        }
3024
3025        if (val & NETXEN_DIMM_MEMTYPE_DDR2_SDRAM)
3026                dimm.mem_type = NETXEN_DIMM_MEM_DDR2_SDRAM;
3027        else
3028                dimm.mem_type = NETXEN_DIMM_MEMTYPE(val);
3029
3030        if (val & NETXEN_DIMM_SIZE) {
3031                dimm.size = NETXEN_DIMM_STD_MEM_SIZE;
3032                goto out;
3033        }
3034
3035        if (!rows) {
3036                netdev_err(netdev, "Invalid no of rows %x\n", rows);
3037                goto out;
3038        }
3039
3040        if (!cols) {
3041                netdev_err(netdev, "Invalid no of columns %x\n", cols);
3042                goto out;
3043        }
3044
3045        if (!banks) {
3046                netdev_err(netdev, "Invalid no of banks %x\n", banks);
3047                goto out;
3048        }
3049
3050        ranks += 1;
3051

    between: When switching on dw, the value of dw must be between 0 and 3.

3052        switch (dw) {
3053        case 0x0:
3054                dw = 32;
3055                break;
3056        case 0x1:
3057                dw = 33;
3058                break;
3059        case 0x2:
3060                dw = 36;
3061                break;
3062        case 0x3:
3063                dw = 64;
3064                break;

      Logically dead code (DEADCODE)

3065        case 0x4:
3066                dw = 72;
3067                break;

     Logically dead code (DEADCODE)

3068        case 0x5:
3069                dw = 80;
3070                break;

     Logically dead code (DEADCODE)

3071        case 0x6:
3072                dw = 128;
3073                break;

     Logically dead code (DEADCODE)

3074        case 0x7:
3075                dw = 144;
3076                break;

     Logically dead code (DEADCODE)

3077        default:
3078                netdev_err(netdev, "Invalid data-width %x\n", dw);
3079                goto out;
3080        }
3081

Macro NETXEN_DIMM_DATAWIDTH is defined as:

#define NETXEN_DIMM_DATAWIDTH(VAL)              ((VAL >> 18) & 0x3)

so the value of dw is always going to be in the range 0x00..0x03
inclusive, hence case statments for cases 0x04 to 0x07 are deadcode. Is
the mask correct or should the case statements be removed?

Colin

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2021-07-30 10:18 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-07-30 10:18 netxen: mask issue with redundant cases in a switch statement Colin Ian King

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).