Hello Talat, I've started reviewing rdma-core a few days ago. My initial
thoughts are definitely mixed: on the one hand, if much of the code was
already in main in other packages, then just coalescing it into one
package is a low-risk change.

On the other hand, the code quality is all over the place: cppcheck
reports many legitimate issues, and some code runs the very strong risk of
easily leaking memory, encouraging double-frees, overflows, etc.

Here's the list of issues my version of cppcheck reported; the realloc()
issue is low-severity, and some of the double-free results may just be the
result of the code not conforming to expectations. The rest look like real
bugs. I'd like to suggest the rdma-core project should aim to have clean
cppcheck results as well as trying out a tool such as Coverity.

I'll have a longer report in a few days as other duties permits.

Thanks


[ibacm/src/parse.c:57]: (error) Common realloc mistake: 'str_buf' nulled but 
not freed upon failure
[ibacm/src/acm.c:2020]: (error) Width 32 given in format string (no. 2) is 
larger than destination buffer 'dev[32]', use %31s to prevent overflowing it.
[ibacm/src/acm.c:2020]: (error) Width 8 given in format string (no. 4) is 
larger than destination buffer 'pkey_str[8]', use %7s to prevent overflowing it.
[ibacm/src/acm.c:2937]: (error) Width 32 given in format string (no. 1) is 
larger than destination buffer 'opt[32]', use %31s to prevent overflowing it.
[ibacm/src/acm.c:2937]: (error) Width 256 given in format string (no. 2) is 
larger than destination buffer 'value[256]', use %255s to prevent overflowing 
it.
[libibumad/tests/umad_sa_mcm_rereg_test.c:396]: (error) Memory leak: list
[librdmacm/preload.c:168]: (error) Width 64 given in format string (no. 1) is 
larger than destination buffer 'prog[64]', use %63s to prevent overflowing it.
[librdmacm/preload.c:168]: (error) Width 16 given in format string (no. 2) is 
larger than destination buffer 'dom[16]', use %15s to prevent overflowing it.
[librdmacm/preload.c:168]: (error) Width 16 given in format string (no. 3) is 
larger than destination buffer 'type[16]', use %15s to prevent overflowing it.
[librdmacm/preload.c:168]: (error) Width 16 given in format string (no. 4) is 
larger than destination buffer 'proto[16]', use %15s to prevent overflowing it.
[librdmacm/preload.c:877]: (error) Dereferencing 'rfds' after it is deallocated 
/ released
[librdmacm/rsocket.c:2948]: (error) Dereferencing 'rfds' after it is 
deallocated / released
[providers/cxgb3/verbs.c:128]: (error) Uninitialized struct member: 
resp.pbl_addr
[providers/cxgb4/cq.c:564]: (error) Uninitialized variable: cqe
[providers/cxgb4/cq.c:564]: (error) Uninitialized struct member: cqe.header
[providers/cxgb4/cq.c:564]: (error) Uninitialized struct member: cqe.len
[providers/cxgb4/cq.c:564]: (error) Uninitialized struct member: cqe.reserved
[providers/cxgb4/cq.c:564]: (error) Uninitialized struct member: 
cqe.bits_type_ts
[providers/hns/hns_roce_u.c:83]: (error) Uninitialized struct member: 
resp.qp_tab_size
[providers/cxgb4/qp.c:305]: (error) Uninitialized variable: len16
[providers/hns/hns_roce_u_verbs.c:103]: (error) Uninitialized struct member: 
resp.pdn
[ibacm/src/acm.c:801]: (error) Uninitialized variable: ep
[ibacm/src/acm.c:1327]: (error) Uninitialized variable: ep
[ibacm/src/acm.c:2168]: (error) Uninitialized variable: subnet
[providers/mlx4/mlx4.c:184]: (error) Uninitialized struct member: resp.dev_caps
[providers/mlx4/mlx4.c:182]: (error) Uninitialized struct member: 
resp.qp_tab_size
[providers/mlx4/mlx4.c:183]: (error) Uninitialized struct member: 
resp.bf_reg_size
[providers/mlx4/mlx4.c:185]: (error) Uninitialized struct member: resp.cqe_size
[providers/mlx4/mlx4.c:174]: (error) Uninitialized struct member: 
resp_v3.qp_tab_size
[providers/mlx4/mlx4.c:175]: (error) Uninitialized struct member: 
resp_v3.bf_reg_size
[providers/mlx4/qp.c:219]: (error) Uninitialized variable: ctrl
[providers/mlx4/verbs.c:746]: (error) Memory pointed to by 'srq' is freed twice.
[providers/mlx4/verbs.c:214]: (error) Uninitialized struct member: resp.pdn
[providers/mlx5/qp.c:399]: (error) Buffer is accessed out of bounds: 
eseg.inline_hdr_start
[providers/mthca/mthca.c:134]: (error) Uninitialized struct member: 
resp.qp_tab_size
[providers/mthca/mthca.c:145]: (error) Uninitialized struct member: 
resp.uarc_size
[providers/mlx5/qp.c:995]: (error) Uninitialized variable: sz
[providers/mthca/qp.c:111]: (error) Uninitialized variable: f0
[providers/mthca/qp.c:112]: (error) Uninitialized variable: op0
[providers/mthca/qp.c:453]: (error) Uninitialized variable: f0
[providers/mthca/qp.c:454]: (error) Uninitialized variable: op0
[providers/nes/nes_umain.c:147]: (error) Uninitialized struct member: 
resp.max_pds
[providers/nes/nes_umain.c:148]: (error) Uninitialized struct member: 
resp.max_qps
[providers/nes/nes_umain.c:149]: (error) Uninitialized struct member: 
resp.wq_size
[providers/nes/nes_umain.c:150]: (error) Uninitialized struct member: 
resp.virtwq
[providers/nes/nes_umain.c:127]: (error) Uninitialized struct member: 
resp.kernel_ver
[providers/nes/nes_umain.c:129]: (error) Uninitialized struct member: 
resp.kernel_ver
[providers/mthca/verbs.c:485]: (error) Memory pointed to by 'srq' is freed 
twice.
[providers/mthca/verbs.c:704]: (error) Memory pointed to by 'qp' is freed twice.
[providers/mthca/verbs.c:98]: (error) Uninitialized struct member: resp.pdn
[providers/mlx5/verbs.c:151]: (error) Uninitialized struct member: resp.pdn
[providers/nes/nes_uverbs.c:129]: (error) Uninitialized struct member: 
resp.pd_id
[providers/nes/nes_uverbs.c:130]: (error) Uninitialized struct member: 
resp.db_index
[providers/ocrdma/ocrdma_verbs.c:155]: (error) Uninitialized struct member: 
resp.dpp_enabled
[providers/ocrdma/ocrdma_verbs.c:156]: (error) Uninitialized struct member: 
resp.dpp_page_addr_hi
[providers/ocrdma/ocrdma_verbs.c:157]: (error) Uninitialized struct member: 
resp.dpp_page_addr_lo
[providers/qedr/qelr_verbs.c:135]: (error) Uninitialized struct member: 
resp.pd_id

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1732892

Title:
  [MIR] 18.04 rdma-core as replacement for older ibverbs code

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/rdma-core/+bug/1732892/+subscriptions

-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to