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