diff options
author | Andrea Claudi <aclaudi@redhat.com> | 2022-03-08 18:04:57 +0100 |
---|---|---|
committer | Stephen Hemminger <stephen@networkplumber.org> | 2022-03-11 19:16:50 -0800 |
commit | ac0a54b2d5db0298baab935f555fd092c4b6cb69 (patch) | |
tree | cffacf5b6dfff904c697398ceb0bd560693431ef /rdma | |
parent | 885e281eadc238e30f7c3a42ad366ea123c03a83 (diff) |
rdma: make RES_PID and RES_KERN_NAME alternative to each other
RDMA_NLDEV_ATTR_RES_PID and RDMA_NLDEV_ATTR_RES_KERN_NAME cannot be set
together, as evident for the fill_res_name_pid() function in the kernel
infiniband driver. This commit makes this clear at first glance, using
an else branch for the RDMA_NLDEV_ATTR_RES_KERN_NAME case.
This also helps coverity to better understand this code and avoid
producing a bogus warning complaining about mnl_attr_get_str overwriting
comme, and thus leaking the storage that comm points to.
Signed-off-by: Andrea Claudi <aclaudi@redhat.com>
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Diffstat (limited to 'rdma')
-rw-r--r-- | rdma/res-cmid.c | 10 | ||||
-rw-r--r-- | rdma/res-cq.c | 9 | ||||
-rw-r--r-- | rdma/res-ctx.c | 9 | ||||
-rw-r--r-- | rdma/res-mr.c | 8 | ||||
-rw-r--r-- | rdma/res-pd.c | 9 | ||||
-rw-r--r-- | rdma/res-qp.c | 9 | ||||
-rw-r--r-- | rdma/res-srq.c | 10 | ||||
-rw-r--r-- | rdma/stat.c | 9 |
8 files changed, 34 insertions, 39 deletions
diff --git a/rdma/res-cmid.c b/rdma/res-cmid.c index b532d7f4..7371c3a6 100644 --- a/rdma/res-cmid.c +++ b/rdma/res-cmid.c @@ -164,6 +164,10 @@ static int res_cm_id_line(struct rd *rd, const char *name, int idx, pid = mnl_attr_get_u32(nla_line[RDMA_NLDEV_ATTR_RES_PID]); if (!get_task_name(pid, b, sizeof(b))) comm = b; + } else if (nla_line[RDMA_NLDEV_ATTR_RES_KERN_NAME]) { + /* discard const from mnl_attr_get_str */ + comm = (char *)mnl_attr_get_str( + nla_line[RDMA_NLDEV_ATTR_RES_KERN_NAME]); } if (rd_is_filtered_attr(rd, "pid", pid, @@ -176,12 +180,6 @@ static int res_cm_id_line(struct rd *rd, const char *name, int idx, nla_line[RDMA_NLDEV_ATTR_RES_CM_IDN])) goto out; - if (nla_line[RDMA_NLDEV_ATTR_RES_KERN_NAME]) { - /* discard const from mnl_attr_get_str */ - comm = (char *)mnl_attr_get_str( - nla_line[RDMA_NLDEV_ATTR_RES_KERN_NAME]); - } - open_json_object(NULL); print_link(rd, idx, name, port, nla_line); res_print_u32(rd, "cm-idn", cm_idn, diff --git a/rdma/res-cq.c b/rdma/res-cq.c index a4625afc..2cfa4994 100644 --- a/rdma/res-cq.c +++ b/rdma/res-cq.c @@ -89,6 +89,10 @@ static int res_cq_line(struct rd *rd, const char *name, int idx, pid = mnl_attr_get_u32(nla_line[RDMA_NLDEV_ATTR_RES_PID]); if (!get_task_name(pid, b, sizeof(b))) comm = b; + } else if (nla_line[RDMA_NLDEV_ATTR_RES_KERN_NAME]) { + /* discard const from mnl_attr_get_str */ + comm = (char *)mnl_attr_get_str( + nla_line[RDMA_NLDEV_ATTR_RES_KERN_NAME]); } if (rd_is_filtered_attr(rd, "pid", pid, @@ -106,11 +110,6 @@ static int res_cq_line(struct rd *rd, const char *name, int idx, nla_line[RDMA_NLDEV_ATTR_RES_CTXN])) goto out; - if (nla_line[RDMA_NLDEV_ATTR_RES_KERN_NAME]) - /* discard const from mnl_attr_get_str */ - comm = (char *)mnl_attr_get_str( - nla_line[RDMA_NLDEV_ATTR_RES_KERN_NAME]); - open_json_object(NULL); print_dev(rd, idx, name); res_print_u32(rd, "cqn", cqn, nla_line[RDMA_NLDEV_ATTR_RES_CQN]); diff --git a/rdma/res-ctx.c b/rdma/res-ctx.c index 79ecbf67..500186d9 100644 --- a/rdma/res-ctx.c +++ b/rdma/res-ctx.c @@ -23,6 +23,10 @@ static int res_ctx_line(struct rd *rd, const char *name, int idx, pid = mnl_attr_get_u32(nla_line[RDMA_NLDEV_ATTR_RES_PID]); if (!get_task_name(pid, b, sizeof(b))) comm = b; + } else if (nla_line[RDMA_NLDEV_ATTR_RES_KERN_NAME]) { + /* discard const from mnl_attr_get_str */ + comm = (char *)mnl_attr_get_str( + nla_line[RDMA_NLDEV_ATTR_RES_KERN_NAME]); } if (rd_is_filtered_attr(rd, "pid", pid, @@ -36,11 +40,6 @@ static int res_ctx_line(struct rd *rd, const char *name, int idx, nla_line[RDMA_NLDEV_ATTR_RES_CTXN])) goto out; - if (nla_line[RDMA_NLDEV_ATTR_RES_KERN_NAME]) - /* discard const from mnl_attr_get_str */ - comm = (char *)mnl_attr_get_str( - nla_line[RDMA_NLDEV_ATTR_RES_KERN_NAME]); - open_json_object(NULL); print_dev(rd, idx, name); res_print_u32(rd, "ctxn", ctxn, nla_line[RDMA_NLDEV_ATTR_RES_CTXN]); diff --git a/rdma/res-mr.c b/rdma/res-mr.c index 7153a6fe..fb48d5df 100644 --- a/rdma/res-mr.c +++ b/rdma/res-mr.c @@ -52,6 +52,10 @@ static int res_mr_line(struct rd *rd, const char *name, int idx, pid = mnl_attr_get_u32(nla_line[RDMA_NLDEV_ATTR_RES_PID]); if (!get_task_name(pid, b, sizeof(b))) comm = b; + } else if (nla_line[RDMA_NLDEV_ATTR_RES_KERN_NAME]) { + /* discard const from mnl_attr_get_str */ + comm = (char *)mnl_attr_get_str( + nla_line[RDMA_NLDEV_ATTR_RES_KERN_NAME]); } if (rd_is_filtered_attr(rd, "pid", pid, @@ -70,10 +74,6 @@ static int res_mr_line(struct rd *rd, const char *name, int idx, nla_line[RDMA_NLDEV_ATTR_RES_PDN])) goto out; - if (nla_line[RDMA_NLDEV_ATTR_RES_KERN_NAME]) - /* discard const from mnl_attr_get_str */ - comm = (char *)mnl_attr_get_str( - nla_line[RDMA_NLDEV_ATTR_RES_KERN_NAME]); open_json_object(NULL); print_dev(rd, idx, name); res_print_u32(rd, "mrn", mrn, nla_line[RDMA_NLDEV_ATTR_RES_MRN]); diff --git a/rdma/res-pd.c b/rdma/res-pd.c index 09c1040c..66f91f42 100644 --- a/rdma/res-pd.c +++ b/rdma/res-pd.c @@ -39,6 +39,10 @@ static int res_pd_line(struct rd *rd, const char *name, int idx, pid = mnl_attr_get_u32(nla_line[RDMA_NLDEV_ATTR_RES_PID]); if (!get_task_name(pid, b, sizeof(b))) comm = b; + } else if (nla_line[RDMA_NLDEV_ATTR_RES_KERN_NAME]) { + /* discard const from mnl_attr_get_str */ + comm = (char *)mnl_attr_get_str( + nla_line[RDMA_NLDEV_ATTR_RES_KERN_NAME]); } if (rd_is_filtered_attr(rd, "pid", pid, @@ -58,11 +62,6 @@ static int res_pd_line(struct rd *rd, const char *name, int idx, nla_line[RDMA_NLDEV_ATTR_RES_PDN])) goto out; - if (nla_line[RDMA_NLDEV_ATTR_RES_KERN_NAME]) - /* discard const from mnl_attr_get_str */ - comm = (char *)mnl_attr_get_str( - nla_line[RDMA_NLDEV_ATTR_RES_KERN_NAME]); - open_json_object(NULL); print_dev(rd, idx, name); res_print_u32(rd, "pdn", pdn, nla_line[RDMA_NLDEV_ATTR_RES_PDN]); diff --git a/rdma/res-qp.c b/rdma/res-qp.c index 151accb9..c180a97e 100644 --- a/rdma/res-qp.c +++ b/rdma/res-qp.c @@ -151,17 +151,16 @@ static int res_qp_line(struct rd *rd, const char *name, int idx, pid = mnl_attr_get_u32(nla_line[RDMA_NLDEV_ATTR_RES_PID]); if (!get_task_name(pid, b, sizeof(b))) comm = b; + } else if (nla_line[RDMA_NLDEV_ATTR_RES_KERN_NAME]) { + /* discard const from mnl_attr_get_str */ + comm = (char *)mnl_attr_get_str( + nla_line[RDMA_NLDEV_ATTR_RES_KERN_NAME]); } if (rd_is_filtered_attr(rd, "pid", pid, nla_line[RDMA_NLDEV_ATTR_RES_PID])) goto out; - if (nla_line[RDMA_NLDEV_ATTR_RES_KERN_NAME]) - /* discard const from mnl_attr_get_str */ - comm = (char *)mnl_attr_get_str( - nla_line[RDMA_NLDEV_ATTR_RES_KERN_NAME]); - open_json_object(NULL); print_link(rd, idx, name, port, nla_line); res_print_u32(rd, "lqpn", lqpn, nla_line[RDMA_NLDEV_ATTR_RES_LQPN]); diff --git a/rdma/res-srq.c b/rdma/res-srq.c index f3a652d8..186ae281 100644 --- a/rdma/res-srq.c +++ b/rdma/res-srq.c @@ -179,7 +179,12 @@ static int res_srq_line(struct rd *rd, const char *name, int idx, pid = mnl_attr_get_u32(nla_line[RDMA_NLDEV_ATTR_RES_PID]); if (!get_task_name(pid, b, sizeof(b))) comm = b; + } else if (nla_line[RDMA_NLDEV_ATTR_RES_KERN_NAME]) { + /* discard const from mnl_attr_get_str */ + comm = (char *)mnl_attr_get_str( + nla_line[RDMA_NLDEV_ATTR_RES_KERN_NAME]); } + if (rd_is_filtered_attr(rd, "pid", pid, nla_line[RDMA_NLDEV_ATTR_RES_PID])) goto out; @@ -212,11 +217,6 @@ static int res_srq_line(struct rd *rd, const char *name, int idx, MNL_CB_OK) goto out; - if (nla_line[RDMA_NLDEV_ATTR_RES_KERN_NAME]) - /* discard const from mnl_attr_get_str */ - comm = (char *)mnl_attr_get_str( - nla_line[RDMA_NLDEV_ATTR_RES_KERN_NAME]); - open_json_object(NULL); print_dev(rd, idx, name); res_print_u32(rd, "srqn", srqn, nla_line[RDMA_NLDEV_ATTR_RES_SRQN]); diff --git a/rdma/stat.c b/rdma/stat.c index ab062915..aad8815c 100644 --- a/rdma/stat.c +++ b/rdma/stat.c @@ -253,15 +253,16 @@ static int res_counter_line(struct rd *rd, const char *name, int index, pid = mnl_attr_get_u32(nla_line[RDMA_NLDEV_ATTR_RES_PID]); if (!get_task_name(pid, b, sizeof(b))) comm = b; + } else if (nla_line[RDMA_NLDEV_ATTR_RES_KERN_NAME]) { + /* discard const from mnl_attr_get_str */ + comm = (char *)mnl_attr_get_str( + nla_line[RDMA_NLDEV_ATTR_RES_KERN_NAME]); } + if (rd_is_filtered_attr(rd, "pid", pid, nla_line[RDMA_NLDEV_ATTR_RES_PID])) return MNL_CB_OK; - if (nla_line[RDMA_NLDEV_ATTR_RES_KERN_NAME]) - comm = (char *)mnl_attr_get_str( - nla_line[RDMA_NLDEV_ATTR_RES_KERN_NAME]); - mnl_attr_for_each_nested(nla_entry, qp_table) { struct nlattr *qp_line[RDMA_NLDEV_ATTR_MAX] = {}; |