On 6/8/22 8:56 PM, Dan Carpenter wrote:
Hello Cheng Xu, The patch c4612e83c14b: "RDMA/erdma: Add verbs implementation" from May 23, 2022, leads to the following Smatch static checker warning: drivers/infiniband/hw/erdma/erdma_verbs.c:111 create_qp_cmd() error: uninitialized symbol 'resp0'. drivers/infiniband/hw/erdma/erdma_verbs.c 100 req.sq_buf_addr = user_qp->sq_mtt.mtt_entry[0]; 101 req.rq_buf_addr = user_qp->rq_mtt.mtt_entry[0]; 102 103 req.sq_db_info_dma_addr = user_qp->sq_db_info_dma_addr; 104 req.rq_db_info_dma_addr = user_qp->rq_db_info_dma_addr; 105 } 106 107 err = erdma_post_cmd_wait(&dev->cmdq, (u64 *)&req, sizeof(req), &resp0, 108 &resp1); The erdma_post_cmd_wait() function does not initialize erdma_post_cmd_wait() on the error paths.
Oh, I knew this before: since erdma_post_cmd_wait returns error, the qp 's resource will destroy soon, the uninitialized value of resp0 will influence nothing. So here I reduce a condition judgement. Anyway, I will fix it to eliminate the static checker warning.
Also it returns comp_wait->comp_status which is a u8. I guess that's some kind of custom error code. Mixing kernel and custom error codes is dangerous. I think it's a bug in this case.
I will fix it in the next version of our patches. Thanks, Cheng Xu