2021-09-30 11:37:04

by Shunsuke Mie

[permalink] [raw]
Subject: [PATCH] Provider/rxe: Allocate rxe/ib objs by calloc

Some rxe/ib objects are allocated by malloc() and initialize manually
respectively. To prevent a bug caused by memory uninitialization, this
patch change to use calloc().

Signed-off-by: Shunsuke Mie <[email protected]>
---
providers/rxe/rxe.c | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/providers/rxe/rxe.c b/providers/rxe/rxe.c
index 3533a325..788a1bbd 100644
--- a/providers/rxe/rxe.c
+++ b/providers/rxe/rxe.c
@@ -104,7 +104,7 @@ static struct ibv_pd *rxe_alloc_pd(struct ibv_context *context)
struct ib_uverbs_alloc_pd_resp resp;
struct ibv_pd *pd;

- pd = malloc(sizeof(*pd));
+ pd = calloc(1, sizeof(*pd));
if (!pd)
return NULL;

@@ -225,7 +225,7 @@ static struct ibv_mr *rxe_reg_mr(struct ibv_pd *pd, void *addr, size_t length,
struct ib_uverbs_reg_mr_resp resp;
int ret;

- vmr = malloc(sizeof(*vmr));
+ vmr = calloc(1, sizeof(*vmr));
if (!vmr)
return NULL;

@@ -382,7 +382,7 @@ static struct ibv_cq *rxe_create_cq(struct ibv_context *context, int cqe,
struct urxe_create_cq_resp resp = {};
int ret;

- cq = malloc(sizeof(*cq));
+ cq = calloc(1, sizeof(*cq));
if (!cq)
return NULL;

@@ -594,7 +594,7 @@ static struct ibv_srq *rxe_create_srq(struct ibv_pd *pd,
struct urxe_create_srq_resp resp;
int ret;

- srq = malloc(sizeof(*srq));
+ srq = calloc(1, sizeof(*srq));
if (srq == NULL)
return NULL;

@@ -1167,7 +1167,7 @@ static struct ibv_qp *rxe_create_qp(struct ibv_pd *ibpd,
struct rxe_qp *qp;
int ret;

- qp = malloc(sizeof(*qp));
+ qp = calloc(1, sizeof(*qp));
if (!qp)
goto err;

@@ -1659,7 +1659,7 @@ static struct ibv_ah *rxe_create_ah(struct ibv_pd *pd, struct ibv_ah_attr *attr)
return NULL;
}

- ah = malloc(sizeof(*ah));
+ ah = calloc(1, sizeof(*ah));
if (ah == NULL)
return NULL;

--
2.17.1


2021-09-30 13:15:49

by Håkon Bugge

[permalink] [raw]
Subject: Re: [PATCH] Provider/rxe: Allocate rxe/ib objs by calloc



> On 30 Sep 2021, at 13:35, Shunsuke Mie <[email protected]> wrote:
>
> Some rxe/ib objects are allocated by malloc() and initialize manually
> respectively. To prevent a bug caused by memory uninitialization, this
> patch change to use calloc().
>
> Signed-off-by: Shunsuke Mie <[email protected]>


LGTM,

Reviewed-by: Håkon Bugge <[email protected]>


Thxs, Håkon

> ---
> providers/rxe/rxe.c | 12 ++++++------
> 1 file changed, 6 insertions(+), 6 deletions(-)
>
> diff --git a/providers/rxe/rxe.c b/providers/rxe/rxe.c
> index 3533a325..788a1bbd 100644
> --- a/providers/rxe/rxe.c
> +++ b/providers/rxe/rxe.c
> @@ -104,7 +104,7 @@ static struct ibv_pd *rxe_alloc_pd(struct ibv_context *context)
> struct ib_uverbs_alloc_pd_resp resp;
> struct ibv_pd *pd;
>
> - pd = malloc(sizeof(*pd));
> + pd = calloc(1, sizeof(*pd));
> if (!pd)
> return NULL;
>
> @@ -225,7 +225,7 @@ static struct ibv_mr *rxe_reg_mr(struct ibv_pd *pd, void *addr, size_t length,
> struct ib_uverbs_reg_mr_resp resp;
> int ret;
>
> - vmr = malloc(sizeof(*vmr));
> + vmr = calloc(1, sizeof(*vmr));
> if (!vmr)
> return NULL;
>
> @@ -382,7 +382,7 @@ static struct ibv_cq *rxe_create_cq(struct ibv_context *context, int cqe,
> struct urxe_create_cq_resp resp = {};
> int ret;
>
> - cq = malloc(sizeof(*cq));
> + cq = calloc(1, sizeof(*cq));
> if (!cq)
> return NULL;
>
> @@ -594,7 +594,7 @@ static struct ibv_srq *rxe_create_srq(struct ibv_pd *pd,
> struct urxe_create_srq_resp resp;
> int ret;
>
> - srq = malloc(sizeof(*srq));
> + srq = calloc(1, sizeof(*srq));
> if (srq == NULL)
> return NULL;
>
> @@ -1167,7 +1167,7 @@ static struct ibv_qp *rxe_create_qp(struct ibv_pd *ibpd,
> struct rxe_qp *qp;
> int ret;
>
> - qp = malloc(sizeof(*qp));
> + qp = calloc(1, sizeof(*qp));
> if (!qp)
> goto err;
>
> @@ -1659,7 +1659,7 @@ static struct ibv_ah *rxe_create_ah(struct ibv_pd *pd, struct ibv_ah_attr *attr)
> return NULL;
> }
>
> - ah = malloc(sizeof(*ah));
> + ah = calloc(1, sizeof(*ah));
> if (ah == NULL)
> return NULL;
>
> --
> 2.17.1
>

2021-09-30 18:49:20

by Zhu Yanjun

[permalink] [raw]
Subject: Re: [PATCH] Provider/rxe: Allocate rxe/ib objs by calloc

On Thu, Sep 30, 2021 at 7:35 PM Shunsuke Mie <[email protected]> wrote:
>
> Some rxe/ib objects are allocated by malloc() and initialize manually
> respectively. To prevent a bug caused by memory uninitialization, this
> patch change to use calloc().

Thanks a lot.

Zhu Yanjun

>
> Signed-off-by: Shunsuke Mie <[email protected]>
> ---
> providers/rxe/rxe.c | 12 ++++++------
> 1 file changed, 6 insertions(+), 6 deletions(-)
>
> diff --git a/providers/rxe/rxe.c b/providers/rxe/rxe.c
> index 3533a325..788a1bbd 100644
> --- a/providers/rxe/rxe.c
> +++ b/providers/rxe/rxe.c
> @@ -104,7 +104,7 @@ static struct ibv_pd *rxe_alloc_pd(struct ibv_context *context)
> struct ib_uverbs_alloc_pd_resp resp;
> struct ibv_pd *pd;
>
> - pd = malloc(sizeof(*pd));
> + pd = calloc(1, sizeof(*pd));
> if (!pd)
> return NULL;
>
> @@ -225,7 +225,7 @@ static struct ibv_mr *rxe_reg_mr(struct ibv_pd *pd, void *addr, size_t length,
> struct ib_uverbs_reg_mr_resp resp;
> int ret;
>
> - vmr = malloc(sizeof(*vmr));
> + vmr = calloc(1, sizeof(*vmr));
> if (!vmr)
> return NULL;
>
> @@ -382,7 +382,7 @@ static struct ibv_cq *rxe_create_cq(struct ibv_context *context, int cqe,
> struct urxe_create_cq_resp resp = {};
> int ret;
>
> - cq = malloc(sizeof(*cq));
> + cq = calloc(1, sizeof(*cq));
> if (!cq)
> return NULL;
>
> @@ -594,7 +594,7 @@ static struct ibv_srq *rxe_create_srq(struct ibv_pd *pd,
> struct urxe_create_srq_resp resp;
> int ret;
>
> - srq = malloc(sizeof(*srq));
> + srq = calloc(1, sizeof(*srq));
> if (srq == NULL)
> return NULL;
>
> @@ -1167,7 +1167,7 @@ static struct ibv_qp *rxe_create_qp(struct ibv_pd *ibpd,
> struct rxe_qp *qp;
> int ret;
>
> - qp = malloc(sizeof(*qp));
> + qp = calloc(1, sizeof(*qp));
> if (!qp)
> goto err;
>
> @@ -1659,7 +1659,7 @@ static struct ibv_ah *rxe_create_ah(struct ibv_pd *pd, struct ibv_ah_attr *attr)
> return NULL;
> }
>
> - ah = malloc(sizeof(*ah));
> + ah = calloc(1, sizeof(*ah));
> if (ah == NULL)
> return NULL;
>
> --
> 2.17.1
>

2021-10-06 08:18:18

by Leon Romanovsky

[permalink] [raw]
Subject: Re: [PATCH] Provider/rxe: Allocate rxe/ib objs by calloc

On Thu, Sep 30, 2021 at 08:35:27PM +0900, Shunsuke Mie wrote:
> Some rxe/ib objects are allocated by malloc() and initialize manually
> respectively. To prevent a bug caused by memory uninitialization, this
> patch change to use calloc().
>
> Signed-off-by: Shunsuke Mie <[email protected]>
> ---
> providers/rxe/rxe.c | 12 ++++++------
> 1 file changed, 6 insertions(+), 6 deletions(-)
>

Thanks, applied.