All of lore.kernel.org
 help / color / mirror / Atom feed
* cppcheck on dpdk
@ 2018-05-16 12:41 Ferruh Yigit
  2018-05-16 16:03 ` Adrien Mazarguil
                   ` (2 more replies)
  0 siblings, 3 replies; 5+ messages in thread
From: Ferruh Yigit @ 2018-05-16 12:41 UTC (permalink / raw)
  To: dpdk-dev; +Cc: Colin Ian King

Today after listening Colin's Static Analysis talk, I run cppcheck on v18.05-rc4
code and it revealed some issues, sharing here for anyone to interested in
fixing them. At least I encourage to check maintainers to check their own pieces.

It is really easy to run cppcheck, in dpdk source folder:
cppcheck --force .

With above command cppcheck verifies all #ifdef paths, some issues below seems
related to this and that is why these issues not seen in build tests.


[app/test-pmd/cmdline_mtr.c:115]: (error) Memory leak: dscp_table
[app/test-pmd/flowgen.c:160]: (error) Uninitialized variable: ol_flags
[app/test-pmd/tm.c:594]: (error) Memory leak: tnp.shared_shaper_id
[drivers/bus/dpaa/base/fman/fman.c:557]: (error) Uninitialized variable: __if
[drivers/bus/dpaa/base/qbman/qman.c:1220]: (error) Address of auto-variable
'p->shadow_dqrr[DQRR_PTR2IDX(dq)]' returned
[drivers/bus/ifpga/ifpga_bus.c:433]: (warning) Possible null pointer dereference: c2
[drivers/crypto/ccp/ccp_pci.c:41]: (error) Resource leak: fp
[drivers/crypto/dpaa_sec/dpaa_sec.c:662]: (error) Address of auto-variable
'ctx->job' returned
[drivers/crypto/dpaa_sec/dpaa_sec.c:731]: (error) Address of auto-variable
'ctx->job' returned
[drivers/crypto/dpaa_sec/dpaa_sec.c:826]: (error) Address of auto-variable
'ctx->job' returned
[drivers/crypto/dpaa_sec/dpaa_sec.c:881]: (error) Address of auto-variable
'ctx->job' returned
[drivers/crypto/dpaa_sec/dpaa_sec.c:1020]: (error) Address of auto-variable
'ctx->job' returned
[drivers/crypto/dpaa_sec/dpaa_sec.c:1132]: (error) Address of auto-variable
'ctx->job' returned
[drivers/crypto/dpaa_sec/dpaa_sec.c:1258]: (error) Address of auto-variable
'ctx->job' returned
[drivers/crypto/dpaa_sec/dpaa_sec.c:1353]: (error) Address of auto-variable
'ctx->job' returned
[drivers/crypto/dpaa_sec/dpaa_sec.c:1392]: (error) Address of auto-variable
'ctx->job' returned
[drivers/net/avf/base/avf_adminq.c:301]: (error) Shifting signed 32-bit value by
31 bits is undefined behaviour
[drivers/net/avf/base/avf_adminq.c:336]: (error) Shifting signed 32-bit value by
31 bits is undefined behaviour
[drivers/net/avf/base/avf_adminq.c:298]: (error) Shifting signed 32-bit value by
31 bits is undefined behaviour
[drivers/net/avf/base/avf_adminq.c:333]: (error) Shifting signed 32-bit value by
31 bits is undefined behaviour
[drivers/net/avf/base/avf_common.c:367]: (error) Shifting signed 32-bit value by
31 bits is undefined behaviour
[drivers/net/avf/base/avf_common.c:364]: (error) Shifting signed 32-bit value by
31 bits is undefined behaviour
[drivers/net/axgbe/axgbe_dev.c:808]: (error) Shifting signed 32-bit value by 31
bits is undefined behaviour
[drivers/net/axgbe/axgbe_dev.c] -> [drivers/net/axgbe/axgbe_dev.c]: (error)
Invalid value: 0x0204_BUSY_WIDTH
[drivers/net/axgbe/axgbe_ethdev.c] -> [drivers/net/axgbe/axgbe_ethdev.c]:
(error) Invalid value: 0x0008_PR_WIDTH
[drivers/net/axgbe/axgbe_i2c.c] -> [drivers/net/axgbe/axgbe_i2c.c]: (error)
Invalid value: 0x006c_EN_WIDTH
[drivers/net/axgbe/axgbe_phy_impl.c] -> [drivers/net/axgbe/axgbe_phy_impl.c]:
(error) Invalid value: 0x0080_ID_WIDTH
[drivers/net/axgbe/axgbe_rxtx.c:292]: (error) Shifting signed 32-bit value by 31
bits is undefined behaviour
[drivers/net/axgbe/axgbe_rxtx.c:592]: (error) Shifting signed 32-bit value by 31
bits is undefined behaviour
[drivers/net/axgbe/axgbe_rxtx.c] -> [drivers/net/axgbe/axgbe_rxtx.c]: (error)
Invalid value: 0x48_PRXQ_WIDTH
[drivers/net/bnx2x/bnx2x.c:3995]: (error) Shifting signed 32-bit value by 31
bits is undefined behaviour
[drivers/net/bnx2x/bnx2x.c:4000]: (error) Shifting signed 32-bit value by 31
bits is undefined behaviour
[drivers/net/bnx2x/bnx2x.c:8729]: (error) Shifting signed 32-bit value by 31
bits is undefined behaviour
[drivers/net/bnx2x/bnx2x.c:9765]: (error) Shifting signed 32-bit value by 31
bits is undefined behaviour
[drivers/net/bnx2x/elink.c:1042]: (error) Shifting signed 32-bit value by 31
bits is undefined behaviour
[drivers/net/bnx2x/elink.c:2711]: (error) Shifting signed 32-bit value by 31
bits is undefined behaviour
[drivers/net/bnx2x/elink.c:9662]: (error) Shifting signed 32-bit value by 31
bits is undefined behaviour
[drivers/net/bnx2x/elink.c:10295]: (error) Shifting signed 32-bit value by 31
bits is undefined behaviour
[drivers/net/bnxt/bnxt_ethdev.c:594]: (error) Shifting signed 32-bit value by 31
bits is undefined behaviour
[drivers/net/bnxt/bnxt_ethdev.c:634]: (error) Shifting signed 32-bit value by 31
bits is undefined behaviour
[drivers/net/bnxt/bnxt_rxr.c:482]: (error) Uninitialized variable: ag_cons
[drivers/net/bnxt/bnxt_stats.c:211]: (error) Shifting signed 32-bit value by 31
bits is undefined behaviour
[drivers/net/bnxt/bnxt_stats.c:248]: (error) Shifting signed 32-bit value by 31
bits is undefined behaviour
[drivers/net/e1000/base/e1000_82575.c:2324]: (error) Shifting signed 32-bit
value by 31 bits is undefined behaviour
[drivers/net/e1000/base/e1000_82575.c:2326]: (error) Shifting signed 32-bit
value by 31 bits is undefined behaviour
[drivers/net/e1000/base/e1000_82575.c:2333]: (error) Shifting signed 32-bit
value by 31 bits is undefined behaviour
[drivers/net/e1000/base/e1000_82575.c:2335]: (error) Shifting signed 32-bit
value by 31 bits is undefined behaviour
[drivers/net/e1000/base/e1000_ich8lan.c:5169]: (error) Shifting signed 32-bit
value by 31 bits is undefined behaviour
[drivers/net/e1000/igb_ethdev.c:4721]: (error) Shifting signed 32-bit value by
31 bits is undefined behaviour
[drivers/net/e1000/igb_pf.c:154]: (error) Shifting signed 32-bit value by 31
bits is undefined behaviour
[drivers/net/e1000/igb_pf.c:156]: (error) Shifting signed 32-bit value by 31
bits is undefined behaviour
[drivers/net/enic/base/vnic_dev.c:757]: (warning) Possible null pointer
dereference: notify_addr
[drivers/net/i40e/base/i40e_adminq.c:1094]: (error) Uninitialized variable: ntu
[drivers/net/i40e/base/i40e_adminq.c:1149]: (error) Uninitialized variable: ntu
[drivers/net/i40e/base/i40e_adminq.c:1157]: (error) Uninitialized variable: ntu
[drivers/net/i40e/base/i40e_adminq.c:322]: (error) Shifting signed 32-bit value
by 31 bits is undefined behaviour
[drivers/net/i40e/base/i40e_adminq.c:369]: (error) Shifting signed 32-bit value
by 31 bits is undefined behaviour
[drivers/net/i40e/base/i40e_adminq.c:325]: (error) Shifting signed 32-bit value
by 31 bits is undefined behaviour
[drivers/net/i40e/base/i40e_adminq.c:372]: (error) Shifting signed 32-bit value
by 31 bits is undefined behaviour
[drivers/net/i40e/base/i40e_adminq.c:312]: (error) Shifting signed 32-bit value
by 31 bits is undefined behaviour
[drivers/net/i40e/base/i40e_adminq.c:359]: (error) Shifting signed 32-bit value
by 31 bits is undefined behaviour
[drivers/net/i40e/base/i40e_adminq.c:315]: (error) Shifting signed 32-bit value
by 31 bits is undefined behaviour
[drivers/net/i40e/base/i40e_adminq.c:362]: (error) Shifting signed 32-bit value
by 31 bits is undefined behaviour
[drivers/net/i40e/base/i40e_common.c:414]: (error) Shifting signed 32-bit value
by 31 bits is undefined behaviour
[drivers/net/i40e/base/i40e_common.c:417]: (error) Shifting signed 32-bit value
by 31 bits is undefined behaviour
[drivers/net/i40e/base/i40e_common.c:404]: (error) Shifting signed 32-bit value
by 31 bits is undefined behaviour
[drivers/net/i40e/base/i40e_common.c:1179]: (error) Shifting signed 32-bit value
by 31 bits is undefined behaviour
[drivers/net/i40e/base/i40e_common.c:1447]: (error) Shifting signed 32-bit value
by 31 bits is undefined behaviour
[drivers/net/i40e/base/i40e_common.c:1457]: (error) Shifting signed 32-bit value
by 31 bits is undefined behaviour
[drivers/net/i40e/base/i40e_common.c:6482]: (error) Shifting signed 32-bit value
by 31 bits is undefined behaviour
[drivers/net/i40e/base/i40e_common.c:6505]: (error) Shifting signed 32-bit value
by 31 bits is undefined behaviour
[drivers/net/i40e/base/i40e_common.c:6556]: (error) Shifting signed 32-bit value
by 31 bits is undefined behaviour
[drivers/net/i40e/base/i40e_common.c:6581]: (error) Shifting signed 32-bit value
by 31 bits is undefined behaviour
[drivers/net/i40e/base/i40e_common.c:407]: (error) Shifting signed 32-bit value
by 31 bits is undefined behaviour
[drivers/net/i40e/base/i40e_nvm.c:186]: (error) Shifting signed 32-bit value by
31 bits is undefined behaviour
[drivers/net/i40e/i40e_ethdev.c:2070]: (error) Shifting 32-bit value by 36 bits
is undefined behaviour
[drivers/net/i40e/i40e_ethdev.c:2070]: (error) Signed integer overflow for
expression '1<<cnt'.
[drivers/net/i40e/i40e_ethdev.c:11079]: (error) Shifting signed 32-bit value by
31 bits is undefined behaviour
[drivers/net/i40e/i40e_pf.c:1214]: (error) Shifting signed 32-bit value by 31
bits is undefined behaviour
[drivers/net/i40e/i40e_pf.c:1216]: (error) Shifting signed 32-bit value by 31
bits is undefined behaviour
[drivers/net/ixgbe/base/ixgbe_type.h:3651]: (error) syntax error
[drivers/net/mlx4/mlx4_flow.c:303]: (warning) Possible null pointer dereference:
mask
[drivers/net/mlx4/mlx4_rxtx.c:266]: (error) Shifting signed 32-bit value by 31
bits is undefined behaviour
[drivers/net/mlx4/mlx4_rxtx.c:624]: (error) Shifting signed 32-bit value by 31
bits is undefined behaviour
[drivers/net/mlx4/mlx4_txq.c:89]: (error) Shifting signed 32-bit value by 31
bits is undefined behaviour
[drivers/net/mlx4/mlx4_txq.c:91]: (error) Shifting signed 32-bit value by 31
bits is undefined behaviour
[drivers/net/nfp/nfp_net.c:317]: (error) Shifting signed 32-bit value by 31 bits
is undefined behaviour
[drivers/net/nfp/nfp_net.c:558]: (error) Shifting signed 32-bit value by 31 bits
is undefined behaviour
[drivers/net/nfp/nfp_net.c:565]: (error) Shifting signed 32-bit value by 31 bits
is undefined behaviour
[drivers/net/nfp/nfp_net.c:573]: (error) Shifting signed 32-bit value by 31 bits
is undefined behaviour
[drivers/net/qede/base/ecore_dev.c:230]: (error) syntax error
[drivers/net/qede/base/ecore_hw.c:74]: (error) syntax error
[drivers/net/qede/base/ecore_init_fw_funcs.c:624]: (error) Shifting signed
32-bit value by 31 bits is undefined behaviour
[drivers/net/qede/base/ecore_init_fw_funcs.c:628]: (error) Shifting signed
32-bit value by 31 bits is undefined behaviour
[drivers/net/qede/base/ecore_init_fw_funcs.c:649]: (error) Shifting signed
32-bit value by 31 bits is undefined behaviour
[drivers/net/qede/base/ecore_init_fw_funcs.c:651]: (error) Shifting signed
32-bit value by 31 bits is undefined behaviour
[drivers/net/qede/base/ecore_init_fw_funcs.c:685]: (error) Shifting signed
32-bit value by 31 bits is undefined behaviour
[drivers/net/qede/base/ecore_init_fw_funcs.c:725]: (error) Shifting signed
32-bit value by 31 bits is undefined behaviour
[drivers/net/qede/base/ecore_init_fw_funcs.c:727]: (error) Shifting signed
32-bit value by 31 bits is undefined behaviour
[drivers/net/qede/base/ecore_init_fw_funcs.c:935]: (error) Shifting signed
32-bit value by 31 bits is undefined behaviour
[drivers/net/qede/base/ecore_init_fw_funcs.c:988]: (error) Shifting signed
32-bit value by 31 bits is undefined behaviour
[drivers/net/qede/base/ecore_init_fw_funcs.c:1743]: (error) Shifting signed
32-bit value by 31 bits is undefined behaviour
[drivers/net/qede/base/ecore_int.c:1033]: (error) Array 'p_aeu->bits[32]'
accessed at index 9998, which is out of bounds.
[drivers/net/qede/base/ecore_int.c:1074]: (error) Array
'sb_attn_sw->p_aeu_desc[i].bits[32]' accessed at index 9998, which is out of bounds.
[drivers/net/qede/base/ecore_int.c:1382]: (error) Array 'aeu_descs[i].bits[32]'
accessed at index 9998, which is out of bounds.
[drivers/net/qede/base/ecore_int.c:1981]: (error) Shifting signed 32-bit value
by 31 bits is undefined behaviour
[drivers/net/qede/base/ecore_int.c:1986]: (error) Shifting signed 32-bit value
by 31 bits is undefined behaviour
[drivers/net/qede/base/ecore_l2.c:80]: (error) syntax error
[drivers/net/qede/base/ecore_mcp.c:253]: (error) syntax error
[drivers/net/qede/base/ecore_mng_tlv.c:1450]: (error) failed to expand
'OSAL_WARN', Wrong number of parameters for macro 'OSAL_WARN'.
[drivers/net/qede/base/ecore_spq.c:590]: (error) syntax error
[drivers/net/sfc/base/efx_ev.c:158]: (error) Uninitialized variable: eevop
[drivers/net/sfc/base/efx_ev.c:161]: (error) Uninitialized variable: eevop
[drivers/net/sfc/base/efx_intr.c:147]: (error) Uninitialized variable: eiop
[drivers/net/sfc/base/efx_intr.c:150]: (error) Uninitialized variable: eiop
[drivers/net/sfc/base/efx_mac.c:870]: (error) Uninitialized variable: emop
[drivers/net/sfc/base/efx_mon.c:82]: (error) Uninitialized variable: emop
[drivers/net/sfc/base/efx_phy.c:94]: (error) Uninitialized variable: epop
[drivers/net/sfc/base/efx_rx.c:235]: (error) Uninitialized variable: erxop
[drivers/net/sfc/base/efx_rx.c:238]: (error) Uninitialized variable: erxop
[drivers/net/sfc/base/efx_tx.c:262]: (error) Uninitialized variable: etxop
[drivers/net/sfc/base/efx_tx.c:265]: (error) Uninitialized variable: etxop
[drivers/net/softnic/rte_eth_softnic_tm.c:2450]: (error) syntax error
[drivers/net/tap/tap_bpf_program.c:109]: (error) Shifting signed 32-bit value by
31 bits is undefined behaviour
[drivers/net/tap/tap_netlink.c:233]: (warning) Possible null pointer
dereference: data
[drivers/net/tap/tap_tcmsgs.c:127]: (error) Uninitialized variable: opt
[examples/bbdev_app/main.c:597]: (error) Memory pointed to by 'xstats' is freed
twice.
[examples/bbdev_app/main.c:604]: (error) Memory pointed to by 'xstats' is freed
twice.
[examples/flow_filtering/main.c:265]: (error) Signed integer overflow for
expression '(192<<24)+(168<<16)'.
[examples/flow_filtering/main.c:265]: (error) Signed integer overflow for
expression '(192<<24)+(168<<16)+(1<<8)'.
[examples/flow_filtering/main.c:265]: (error) Signed integer overflow for
expression '(192<<24)+(168<<16)+(1<<8)+1'.
[examples/vhost/main.c:388]: (error) Common realloc mistake: 'socket_files'
nulled but not freed upon failure
[kernel/linux/kni/ethtool/igb/e1000_82575.c:2270]: (error) Shifting signed
32-bit value by 31 bits is undefined behaviour
[kernel/linux/kni/ethtool/igb/e1000_82575.c:2272]: (error) Shifting signed
32-bit value by 31 bits is undefined behaviour
[kernel/linux/kni/ethtool/igb/e1000_82575.c:2279]: (error) Shifting signed
32-bit value by 31 bits is undefined behaviour
[kernel/linux/kni/ethtool/igb/e1000_82575.c:2281]: (error) Shifting signed
32-bit value by 31 bits is undefined behaviour
[kernel/linux/kni/ethtool/ixgbe/ixgbe_82599.c:1487]: (error) Shifting signed
32-bit value by 31 bits is undefined behaviour
[lib/librte_acl/acl_gen.c:166]: (error) Shifting signed 32-bit value by 31 bits
is undefined behaviour
[lib/librte_eal/common/rte_reciprocal.c:105]: (error) Shifting signed 32-bit
value by 31 bits is undefined behaviour
[lib/librte_eal/common/rte_service.c:750]: (warning) Possible null pointer
dereference: f
[lib/librte_eal/linuxapp/eal/eal_interrupts.c:423]: (error) syntax error
[lib/librte_eal/linuxapp/eal/eal_memory.c:79]: (error) Uninitialized variable: tmp
[lib/librte_eal/linuxapp/eal/eal_vfio.c:1803]: (error) Uninitialized variable:
cur_grp
[lib/librte_net/rte_net_crc.c:72]: (error) Shifting signed 32-bit value by 31
bits is undefined behaviour
[lib/librte_vhost/vdpa.c:74]: (error, inconclusive) Array 'vdpa_devices[1024]'
accessed at index 1024, which is out of bounds.
[test/test/test_reorder.c:272]: (error) Array 'robufs[8]' accessed at index 8,
which is out of bounds.

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: cppcheck on dpdk
  2018-05-16 12:41 cppcheck on dpdk Ferruh Yigit
@ 2018-05-16 16:03 ` Adrien Mazarguil
  2018-05-31 11:22 ` Ferruh Yigit
  2018-05-31 11:28 ` Colin Ian King
  2 siblings, 0 replies; 5+ messages in thread
From: Adrien Mazarguil @ 2018-05-16 16:03 UTC (permalink / raw)
  To: Ferruh Yigit; +Cc: dpdk-dev, Colin Ian King

On Wed, May 16, 2018 at 01:41:09PM +0100, Ferruh Yigit wrote:
> Today after listening Colin's Static Analysis talk, I run cppcheck on v18.05-rc4
> code and it revealed some issues, sharing here for anyone to interested in
> fixing them. At least I encourage to check maintainers to check their own pieces.
> 
> It is really easy to run cppcheck, in dpdk source folder:
> cppcheck --force .
> 
> With above command cppcheck verifies all #ifdef paths, some issues below seems
> related to this and that is why these issues not seen in build tests.
<snip>
> [drivers/net/mlx4/mlx4_flow.c:303]: (warning) Possible null pointer dereference:
> mask

False positive, a NULL mask means flow->promisc == 1, in which case this
code isn't reached.

> [drivers/net/mlx4/mlx4_rxtx.c:266]: (error) Shifting signed 32-bit value by 31
> bits is undefined behaviour
> [drivers/net/mlx4/mlx4_rxtx.c:624]: (error) Shifting signed 32-bit value by 31
> bits is undefined behaviour
> [drivers/net/mlx4/mlx4_txq.c:89]: (error) Shifting signed 32-bit value by 31
> bits is undefined behaviour
> [drivers/net/mlx4/mlx4_txq.c:91]: (error) Shifting signed 32-bit value by 31
> bits is undefined behaviour

Indeed, I'll send fixes shortly for these. Thanks!

-- 
Adrien Mazarguil
6WIND

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: cppcheck on dpdk
  2018-05-16 12:41 cppcheck on dpdk Ferruh Yigit
  2018-05-16 16:03 ` Adrien Mazarguil
@ 2018-05-31 11:22 ` Ferruh Yigit
  2018-09-25 16:55   ` Ferruh Yigit
  2018-05-31 11:28 ` Colin Ian King
  2 siblings, 1 reply; 5+ messages in thread
From: Ferruh Yigit @ 2018-05-31 11:22 UTC (permalink / raw)
  To: dpdk-dev; +Cc: Colin Ian King

On 5/16/2018 1:41 PM, Ferruh Yigit wrote:
> Today after listening Colin's Static Analysis talk, I run cppcheck on v18.05-rc4
> code and it revealed some issues, sharing here for anyone to interested in
> fixing them. At least I encourage to check maintainers to check their own pieces.
> 
> It is really easy to run cppcheck, in dpdk source folder:
> cppcheck --force .
> 
> With above command cppcheck verifies all #ifdef paths, some issues below seems
> related to this and that is why these issues not seen in build tests.

Some issues are fixed but we still have more, to trace them better submitted a
bugzilla issue for it:

https://dpdk.org/tracker/show_bug.cgi?id=58

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: cppcheck on dpdk
  2018-05-16 12:41 cppcheck on dpdk Ferruh Yigit
  2018-05-16 16:03 ` Adrien Mazarguil
  2018-05-31 11:22 ` Ferruh Yigit
@ 2018-05-31 11:28 ` Colin Ian King
  2 siblings, 0 replies; 5+ messages in thread
From: Colin Ian King @ 2018-05-31 11:28 UTC (permalink / raw)
  To: Ferruh Yigit, dpdk-dev

On 16/05/18 13:41, Ferruh Yigit wrote:
> Today after listening Colin's Static Analysis talk, I run cppcheck on v18.05-rc4
> code and it revealed some issues, sharing here for anyone to interested in
> fixing them. At least I encourage to check maintainers to check their own pieces.
> 
> It is really easy to run cppcheck, in dpdk source folder:
> cppcheck --force .

FYI, it may be useful to run it with the following options:

cppecheck --enable=all --force

..this may lead to more false positives, but it can catch some deeper
issues.

Colin

> 
> With above command cppcheck verifies all #ifdef paths, some issues below seems
> related to this and that is why these issues not seen in build tests.
> 
> 
> [app/test-pmd/cmdline_mtr.c:115]: (error) Memory leak: dscp_table
> [app/test-pmd/flowgen.c:160]: (error) Uninitialized variable: ol_flags
> [app/test-pmd/tm.c:594]: (error) Memory leak: tnp.shared_shaper_id
> [drivers/bus/dpaa/base/fman/fman.c:557]: (error) Uninitialized variable: __if
> [drivers/bus/dpaa/base/qbman/qman.c:1220]: (error) Address of auto-variable
> 'p->shadow_dqrr[DQRR_PTR2IDX(dq)]' returned
> [drivers/bus/ifpga/ifpga_bus.c:433]: (warning) Possible null pointer dereference: c2
> [drivers/crypto/ccp/ccp_pci.c:41]: (error) Resource leak: fp
> [drivers/crypto/dpaa_sec/dpaa_sec.c:662]: (error) Address of auto-variable
> 'ctx->job' returned
> [drivers/crypto/dpaa_sec/dpaa_sec.c:731]: (error) Address of auto-variable
> 'ctx->job' returned
> [drivers/crypto/dpaa_sec/dpaa_sec.c:826]: (error) Address of auto-variable
> 'ctx->job' returned
> [drivers/crypto/dpaa_sec/dpaa_sec.c:881]: (error) Address of auto-variable
> 'ctx->job' returned
> [drivers/crypto/dpaa_sec/dpaa_sec.c:1020]: (error) Address of auto-variable
> 'ctx->job' returned
> [drivers/crypto/dpaa_sec/dpaa_sec.c:1132]: (error) Address of auto-variable
> 'ctx->job' returned
> [drivers/crypto/dpaa_sec/dpaa_sec.c:1258]: (error) Address of auto-variable
> 'ctx->job' returned
> [drivers/crypto/dpaa_sec/dpaa_sec.c:1353]: (error) Address of auto-variable
> 'ctx->job' returned
> [drivers/crypto/dpaa_sec/dpaa_sec.c:1392]: (error) Address of auto-variable
> 'ctx->job' returned
> [drivers/net/avf/base/avf_adminq.c:301]: (error) Shifting signed 32-bit value by
> 31 bits is undefined behaviour
> [drivers/net/avf/base/avf_adminq.c:336]: (error) Shifting signed 32-bit value by
> 31 bits is undefined behaviour
> [drivers/net/avf/base/avf_adminq.c:298]: (error) Shifting signed 32-bit value by
> 31 bits is undefined behaviour
> [drivers/net/avf/base/avf_adminq.c:333]: (error) Shifting signed 32-bit value by
> 31 bits is undefined behaviour
> [drivers/net/avf/base/avf_common.c:367]: (error) Shifting signed 32-bit value by
> 31 bits is undefined behaviour
> [drivers/net/avf/base/avf_common.c:364]: (error) Shifting signed 32-bit value by
> 31 bits is undefined behaviour
> [drivers/net/axgbe/axgbe_dev.c:808]: (error) Shifting signed 32-bit value by 31
> bits is undefined behaviour
> [drivers/net/axgbe/axgbe_dev.c] -> [drivers/net/axgbe/axgbe_dev.c]: (error)
> Invalid value: 0x0204_BUSY_WIDTH
> [drivers/net/axgbe/axgbe_ethdev.c] -> [drivers/net/axgbe/axgbe_ethdev.c]:
> (error) Invalid value: 0x0008_PR_WIDTH
> [drivers/net/axgbe/axgbe_i2c.c] -> [drivers/net/axgbe/axgbe_i2c.c]: (error)
> Invalid value: 0x006c_EN_WIDTH
> [drivers/net/axgbe/axgbe_phy_impl.c] -> [drivers/net/axgbe/axgbe_phy_impl.c]:
> (error) Invalid value: 0x0080_ID_WIDTH
> [drivers/net/axgbe/axgbe_rxtx.c:292]: (error) Shifting signed 32-bit value by 31
> bits is undefined behaviour
> [drivers/net/axgbe/axgbe_rxtx.c:592]: (error) Shifting signed 32-bit value by 31
> bits is undefined behaviour
> [drivers/net/axgbe/axgbe_rxtx.c] -> [drivers/net/axgbe/axgbe_rxtx.c]: (error)
> Invalid value: 0x48_PRXQ_WIDTH
> [drivers/net/bnx2x/bnx2x.c:3995]: (error) Shifting signed 32-bit value by 31
> bits is undefined behaviour
> [drivers/net/bnx2x/bnx2x.c:4000]: (error) Shifting signed 32-bit value by 31
> bits is undefined behaviour
> [drivers/net/bnx2x/bnx2x.c:8729]: (error) Shifting signed 32-bit value by 31
> bits is undefined behaviour
> [drivers/net/bnx2x/bnx2x.c:9765]: (error) Shifting signed 32-bit value by 31
> bits is undefined behaviour
> [drivers/net/bnx2x/elink.c:1042]: (error) Shifting signed 32-bit value by 31
> bits is undefined behaviour
> [drivers/net/bnx2x/elink.c:2711]: (error) Shifting signed 32-bit value by 31
> bits is undefined behaviour
> [drivers/net/bnx2x/elink.c:9662]: (error) Shifting signed 32-bit value by 31
> bits is undefined behaviour
> [drivers/net/bnx2x/elink.c:10295]: (error) Shifting signed 32-bit value by 31
> bits is undefined behaviour
> [drivers/net/bnxt/bnxt_ethdev.c:594]: (error) Shifting signed 32-bit value by 31
> bits is undefined behaviour
> [drivers/net/bnxt/bnxt_ethdev.c:634]: (error) Shifting signed 32-bit value by 31
> bits is undefined behaviour
> [drivers/net/bnxt/bnxt_rxr.c:482]: (error) Uninitialized variable: ag_cons
> [drivers/net/bnxt/bnxt_stats.c:211]: (error) Shifting signed 32-bit value by 31
> bits is undefined behaviour
> [drivers/net/bnxt/bnxt_stats.c:248]: (error) Shifting signed 32-bit value by 31
> bits is undefined behaviour
> [drivers/net/e1000/base/e1000_82575.c:2324]: (error) Shifting signed 32-bit
> value by 31 bits is undefined behaviour
> [drivers/net/e1000/base/e1000_82575.c:2326]: (error) Shifting signed 32-bit
> value by 31 bits is undefined behaviour
> [drivers/net/e1000/base/e1000_82575.c:2333]: (error) Shifting signed 32-bit
> value by 31 bits is undefined behaviour
> [drivers/net/e1000/base/e1000_82575.c:2335]: (error) Shifting signed 32-bit
> value by 31 bits is undefined behaviour
> [drivers/net/e1000/base/e1000_ich8lan.c:5169]: (error) Shifting signed 32-bit
> value by 31 bits is undefined behaviour
> [drivers/net/e1000/igb_ethdev.c:4721]: (error) Shifting signed 32-bit value by
> 31 bits is undefined behaviour
> [drivers/net/e1000/igb_pf.c:154]: (error) Shifting signed 32-bit value by 31
> bits is undefined behaviour
> [drivers/net/e1000/igb_pf.c:156]: (error) Shifting signed 32-bit value by 31
> bits is undefined behaviour
> [drivers/net/enic/base/vnic_dev.c:757]: (warning) Possible null pointer
> dereference: notify_addr
> [drivers/net/i40e/base/i40e_adminq.c:1094]: (error) Uninitialized variable: ntu
> [drivers/net/i40e/base/i40e_adminq.c:1149]: (error) Uninitialized variable: ntu
> [drivers/net/i40e/base/i40e_adminq.c:1157]: (error) Uninitialized variable: ntu
> [drivers/net/i40e/base/i40e_adminq.c:322]: (error) Shifting signed 32-bit value
> by 31 bits is undefined behaviour
> [drivers/net/i40e/base/i40e_adminq.c:369]: (error) Shifting signed 32-bit value
> by 31 bits is undefined behaviour
> [drivers/net/i40e/base/i40e_adminq.c:325]: (error) Shifting signed 32-bit value
> by 31 bits is undefined behaviour
> [drivers/net/i40e/base/i40e_adminq.c:372]: (error) Shifting signed 32-bit value
> by 31 bits is undefined behaviour
> [drivers/net/i40e/base/i40e_adminq.c:312]: (error) Shifting signed 32-bit value
> by 31 bits is undefined behaviour
> [drivers/net/i40e/base/i40e_adminq.c:359]: (error) Shifting signed 32-bit value
> by 31 bits is undefined behaviour
> [drivers/net/i40e/base/i40e_adminq.c:315]: (error) Shifting signed 32-bit value
> by 31 bits is undefined behaviour
> [drivers/net/i40e/base/i40e_adminq.c:362]: (error) Shifting signed 32-bit value
> by 31 bits is undefined behaviour
> [drivers/net/i40e/base/i40e_common.c:414]: (error) Shifting signed 32-bit value
> by 31 bits is undefined behaviour
> [drivers/net/i40e/base/i40e_common.c:417]: (error) Shifting signed 32-bit value
> by 31 bits is undefined behaviour
> [drivers/net/i40e/base/i40e_common.c:404]: (error) Shifting signed 32-bit value
> by 31 bits is undefined behaviour
> [drivers/net/i40e/base/i40e_common.c:1179]: (error) Shifting signed 32-bit value
> by 31 bits is undefined behaviour
> [drivers/net/i40e/base/i40e_common.c:1447]: (error) Shifting signed 32-bit value
> by 31 bits is undefined behaviour
> [drivers/net/i40e/base/i40e_common.c:1457]: (error) Shifting signed 32-bit value
> by 31 bits is undefined behaviour
> [drivers/net/i40e/base/i40e_common.c:6482]: (error) Shifting signed 32-bit value
> by 31 bits is undefined behaviour
> [drivers/net/i40e/base/i40e_common.c:6505]: (error) Shifting signed 32-bit value
> by 31 bits is undefined behaviour
> [drivers/net/i40e/base/i40e_common.c:6556]: (error) Shifting signed 32-bit value
> by 31 bits is undefined behaviour
> [drivers/net/i40e/base/i40e_common.c:6581]: (error) Shifting signed 32-bit value
> by 31 bits is undefined behaviour
> [drivers/net/i40e/base/i40e_common.c:407]: (error) Shifting signed 32-bit value
> by 31 bits is undefined behaviour
> [drivers/net/i40e/base/i40e_nvm.c:186]: (error) Shifting signed 32-bit value by
> 31 bits is undefined behaviour
> [drivers/net/i40e/i40e_ethdev.c:2070]: (error) Shifting 32-bit value by 36 bits
> is undefined behaviour
> [drivers/net/i40e/i40e_ethdev.c:2070]: (error) Signed integer overflow for
> expression '1<<cnt'.
> [drivers/net/i40e/i40e_ethdev.c:11079]: (error) Shifting signed 32-bit value by
> 31 bits is undefined behaviour
> [drivers/net/i40e/i40e_pf.c:1214]: (error) Shifting signed 32-bit value by 31
> bits is undefined behaviour
> [drivers/net/i40e/i40e_pf.c:1216]: (error) Shifting signed 32-bit value by 31
> bits is undefined behaviour
> [drivers/net/ixgbe/base/ixgbe_type.h:3651]: (error) syntax error
> [drivers/net/mlx4/mlx4_flow.c:303]: (warning) Possible null pointer dereference:
> mask
> [drivers/net/mlx4/mlx4_rxtx.c:266]: (error) Shifting signed 32-bit value by 31
> bits is undefined behaviour
> [drivers/net/mlx4/mlx4_rxtx.c:624]: (error) Shifting signed 32-bit value by 31
> bits is undefined behaviour
> [drivers/net/mlx4/mlx4_txq.c:89]: (error) Shifting signed 32-bit value by 31
> bits is undefined behaviour
> [drivers/net/mlx4/mlx4_txq.c:91]: (error) Shifting signed 32-bit value by 31
> bits is undefined behaviour
> [drivers/net/nfp/nfp_net.c:317]: (error) Shifting signed 32-bit value by 31 bits
> is undefined behaviour
> [drivers/net/nfp/nfp_net.c:558]: (error) Shifting signed 32-bit value by 31 bits
> is undefined behaviour
> [drivers/net/nfp/nfp_net.c:565]: (error) Shifting signed 32-bit value by 31 bits
> is undefined behaviour
> [drivers/net/nfp/nfp_net.c:573]: (error) Shifting signed 32-bit value by 31 bits
> is undefined behaviour
> [drivers/net/qede/base/ecore_dev.c:230]: (error) syntax error
> [drivers/net/qede/base/ecore_hw.c:74]: (error) syntax error
> [drivers/net/qede/base/ecore_init_fw_funcs.c:624]: (error) Shifting signed
> 32-bit value by 31 bits is undefined behaviour
> [drivers/net/qede/base/ecore_init_fw_funcs.c:628]: (error) Shifting signed
> 32-bit value by 31 bits is undefined behaviour
> [drivers/net/qede/base/ecore_init_fw_funcs.c:649]: (error) Shifting signed
> 32-bit value by 31 bits is undefined behaviour
> [drivers/net/qede/base/ecore_init_fw_funcs.c:651]: (error) Shifting signed
> 32-bit value by 31 bits is undefined behaviour
> [drivers/net/qede/base/ecore_init_fw_funcs.c:685]: (error) Shifting signed
> 32-bit value by 31 bits is undefined behaviour
> [drivers/net/qede/base/ecore_init_fw_funcs.c:725]: (error) Shifting signed
> 32-bit value by 31 bits is undefined behaviour
> [drivers/net/qede/base/ecore_init_fw_funcs.c:727]: (error) Shifting signed
> 32-bit value by 31 bits is undefined behaviour
> [drivers/net/qede/base/ecore_init_fw_funcs.c:935]: (error) Shifting signed
> 32-bit value by 31 bits is undefined behaviour
> [drivers/net/qede/base/ecore_init_fw_funcs.c:988]: (error) Shifting signed
> 32-bit value by 31 bits is undefined behaviour
> [drivers/net/qede/base/ecore_init_fw_funcs.c:1743]: (error) Shifting signed
> 32-bit value by 31 bits is undefined behaviour
> [drivers/net/qede/base/ecore_int.c:1033]: (error) Array 'p_aeu->bits[32]'
> accessed at index 9998, which is out of bounds.
> [drivers/net/qede/base/ecore_int.c:1074]: (error) Array
> 'sb_attn_sw->p_aeu_desc[i].bits[32]' accessed at index 9998, which is out of bounds.
> [drivers/net/qede/base/ecore_int.c:1382]: (error) Array 'aeu_descs[i].bits[32]'
> accessed at index 9998, which is out of bounds.
> [drivers/net/qede/base/ecore_int.c:1981]: (error) Shifting signed 32-bit value
> by 31 bits is undefined behaviour
> [drivers/net/qede/base/ecore_int.c:1986]: (error) Shifting signed 32-bit value
> by 31 bits is undefined behaviour
> [drivers/net/qede/base/ecore_l2.c:80]: (error) syntax error
> [drivers/net/qede/base/ecore_mcp.c:253]: (error) syntax error
> [drivers/net/qede/base/ecore_mng_tlv.c:1450]: (error) failed to expand
> 'OSAL_WARN', Wrong number of parameters for macro 'OSAL_WARN'.
> [drivers/net/qede/base/ecore_spq.c:590]: (error) syntax error
> [drivers/net/sfc/base/efx_ev.c:158]: (error) Uninitialized variable: eevop
> [drivers/net/sfc/base/efx_ev.c:161]: (error) Uninitialized variable: eevop
> [drivers/net/sfc/base/efx_intr.c:147]: (error) Uninitialized variable: eiop
> [drivers/net/sfc/base/efx_intr.c:150]: (error) Uninitialized variable: eiop
> [drivers/net/sfc/base/efx_mac.c:870]: (error) Uninitialized variable: emop
> [drivers/net/sfc/base/efx_mon.c:82]: (error) Uninitialized variable: emop
> [drivers/net/sfc/base/efx_phy.c:94]: (error) Uninitialized variable: epop
> [drivers/net/sfc/base/efx_rx.c:235]: (error) Uninitialized variable: erxop
> [drivers/net/sfc/base/efx_rx.c:238]: (error) Uninitialized variable: erxop
> [drivers/net/sfc/base/efx_tx.c:262]: (error) Uninitialized variable: etxop
> [drivers/net/sfc/base/efx_tx.c:265]: (error) Uninitialized variable: etxop
> [drivers/net/softnic/rte_eth_softnic_tm.c:2450]: (error) syntax error
> [drivers/net/tap/tap_bpf_program.c:109]: (error) Shifting signed 32-bit value by
> 31 bits is undefined behaviour
> [drivers/net/tap/tap_netlink.c:233]: (warning) Possible null pointer
> dereference: data
> [drivers/net/tap/tap_tcmsgs.c:127]: (error) Uninitialized variable: opt
> [examples/bbdev_app/main.c:597]: (error) Memory pointed to by 'xstats' is freed
> twice.
> [examples/bbdev_app/main.c:604]: (error) Memory pointed to by 'xstats' is freed
> twice.
> [examples/flow_filtering/main.c:265]: (error) Signed integer overflow for
> expression '(192<<24)+(168<<16)'.
> [examples/flow_filtering/main.c:265]: (error) Signed integer overflow for
> expression '(192<<24)+(168<<16)+(1<<8)'.
> [examples/flow_filtering/main.c:265]: (error) Signed integer overflow for
> expression '(192<<24)+(168<<16)+(1<<8)+1'.
> [examples/vhost/main.c:388]: (error) Common realloc mistake: 'socket_files'
> nulled but not freed upon failure
> [kernel/linux/kni/ethtool/igb/e1000_82575.c:2270]: (error) Shifting signed
> 32-bit value by 31 bits is undefined behaviour
> [kernel/linux/kni/ethtool/igb/e1000_82575.c:2272]: (error) Shifting signed
> 32-bit value by 31 bits is undefined behaviour
> [kernel/linux/kni/ethtool/igb/e1000_82575.c:2279]: (error) Shifting signed
> 32-bit value by 31 bits is undefined behaviour
> [kernel/linux/kni/ethtool/igb/e1000_82575.c:2281]: (error) Shifting signed
> 32-bit value by 31 bits is undefined behaviour
> [kernel/linux/kni/ethtool/ixgbe/ixgbe_82599.c:1487]: (error) Shifting signed
> 32-bit value by 31 bits is undefined behaviour
> [lib/librte_acl/acl_gen.c:166]: (error) Shifting signed 32-bit value by 31 bits
> is undefined behaviour
> [lib/librte_eal/common/rte_reciprocal.c:105]: (error) Shifting signed 32-bit
> value by 31 bits is undefined behaviour
> [lib/librte_eal/common/rte_service.c:750]: (warning) Possible null pointer
> dereference: f
> [lib/librte_eal/linuxapp/eal/eal_interrupts.c:423]: (error) syntax error
> [lib/librte_eal/linuxapp/eal/eal_memory.c:79]: (error) Uninitialized variable: tmp
> [lib/librte_eal/linuxapp/eal/eal_vfio.c:1803]: (error) Uninitialized variable:
> cur_grp
> [lib/librte_net/rte_net_crc.c:72]: (error) Shifting signed 32-bit value by 31
> bits is undefined behaviour
> [lib/librte_vhost/vdpa.c:74]: (error, inconclusive) Array 'vdpa_devices[1024]'
> accessed at index 1024, which is out of bounds.
> [test/test/test_reorder.c:272]: (error) Array 'robufs[8]' accessed at index 8,
> which is out of bounds.
> 

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: cppcheck on dpdk
  2018-05-31 11:22 ` Ferruh Yigit
@ 2018-09-25 16:55   ` Ferruh Yigit
  0 siblings, 0 replies; 5+ messages in thread
From: Ferruh Yigit @ 2018-09-25 16:55 UTC (permalink / raw)
  To: dpdk-dev

On 5/31/2018 12:22 PM, Ferruh Yigit wrote:
> On 5/16/2018 1:41 PM, Ferruh Yigit wrote:
>> Today after listening Colin's Static Analysis talk, I run cppcheck on v18.05-rc4
>> code and it revealed some issues, sharing here for anyone to interested in
>> fixing them. At least I encourage to check maintainers to check their own pieces.
>>
>> It is really easy to run cppcheck, in dpdk source folder:
>> cppcheck --force .
>>
>> With above command cppcheck verifies all #ifdef paths, some issues below seems
>> related to this and that is why these issues not seen in build tests.
> 
> Some issues are fixed but we still have more, to trace them better submitted a
> bugzilla issue for it:
> 
> https://dpdk.org/tracker/show_bug.cgi?id=58

v18.08-115-g55d6bb67c cppcheck report:
https://bugs.dpdk.org/show_bug.cgi?id=58#c6

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2018-09-25 16:56 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-05-16 12:41 cppcheck on dpdk Ferruh Yigit
2018-05-16 16:03 ` Adrien Mazarguil
2018-05-31 11:22 ` Ferruh Yigit
2018-09-25 16:55   ` Ferruh Yigit
2018-05-31 11:28 ` Colin Ian King

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.