diff mbox series

[rdma-next] RDMA/rxe: Clean kzalloc failure paths

Message ID d3cedf723b84e73e8062a67b7489d33802bafba2.1680113597.git.leon@kernel.org (mailing list archive)
State Accepted
Headers show
Series [rdma-next] RDMA/rxe: Clean kzalloc failure paths | expand

Commit Message

Leon Romanovsky March 29, 2023, 6:14 p.m. UTC
From: Leon Romanovsky <leonro@nvidia.com>

There is no need to print any debug messages after failure to
allocate memory, because kernel will print OOM dumps anyway.

Together with removal of these messages, remove useless goto jumps.

Fixes: 5bf944f24129 ("RDMA/rxe: Add error messages")
Reported-by: Dan Carpenter <error27@gmail.com>
Link: https://lore.kernel.org/all/ea43486f-43dd-4054-b1d5-3a0d202be621@kili.mountain
Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
---
 drivers/infiniband/sw/rxe/rxe_queue.c |  5 ++---
 drivers/infiniband/sw/rxe/rxe_verbs.c | 23 ++++++-----------------
 2 files changed, 8 insertions(+), 20 deletions(-)

Comments

Dan Carpenter March 29, 2023, 6:44 p.m. UTC | #1
On Wed, Mar 29, 2023 at 09:14:01PM +0300, Leon Romanovsky wrote:
> @@ -1287,11 +1279,8 @@ static struct ib_mr *rxe_alloc_mr(struct ib_pd *ibpd, enum ib_mr_type mr_type,
>  	}
>  
>  	mr = kzalloc(sizeof(*mr), GFP_KERNEL);
> -	if (!mr) {
> -		err = -ENOMEM;
> -		rxe_dbg_mr(mr, "no memory for mr");
> -		goto err_out;
> -	}
> +	if (!mr)
> +		return ERR_PTR(-ENOMEM);
>  
>  	err = rxe_add_to_pool(&rxe->mr_pool, mr);
>  	if (err) {
        ^^^^^^^^^^
If the rxe_add_to_pool() fails then it calls:

	rxe_dbg_mr(mr, "unable to create mr, err = %d", err);
                   ^^

"rm" is zeroed mem and not useful at this point.  Possibly in a later
patch though.

regards,
dan carpenter
Leon Romanovsky March 29, 2023, 7:18 p.m. UTC | #2
On Wed, Mar 29, 2023 at 09:44:09PM +0300, Dan Carpenter wrote:
> On Wed, Mar 29, 2023 at 09:14:01PM +0300, Leon Romanovsky wrote:
> > @@ -1287,11 +1279,8 @@ static struct ib_mr *rxe_alloc_mr(struct ib_pd *ibpd, enum ib_mr_type mr_type,
> >  	}
> >  
> >  	mr = kzalloc(sizeof(*mr), GFP_KERNEL);
> > -	if (!mr) {
> > -		err = -ENOMEM;
> > -		rxe_dbg_mr(mr, "no memory for mr");
> > -		goto err_out;
> > -	}
> > +	if (!mr)
> > +		return ERR_PTR(-ENOMEM);
> >  
> >  	err = rxe_add_to_pool(&rxe->mr_pool, mr);
> >  	if (err) {
>         ^^^^^^^^^^
> If the rxe_add_to_pool() fails then it calls:
> 
> 	rxe_dbg_mr(mr, "unable to create mr, err = %d", err);
>                    ^^
> 
> "rm" is zeroed mem and not useful at this point.  Possibly in a later
> patch though.

I will delete that line when will apply the patch.

Thanks

> 
> regards,
> dan carpenter
>
Bob Pearson March 29, 2023, 7:57 p.m. UTC | #3
On 3/29/23 13:14, Leon Romanovsky wrote:
> From: Leon Romanovsky <leonro@nvidia.com>
> 
> There is no need to print any debug messages after failure to
> allocate memory, because kernel will print OOM dumps anyway.
> 
> Together with removal of these messages, remove useless goto jumps.
> 
> Fixes: 5bf944f24129 ("RDMA/rxe: Add error messages")
> Reported-by: Dan Carpenter <error27@gmail.com>
> Link: https://lore.kernel.org/all/ea43486f-43dd-4054-b1d5-3a0d202be621@kili.mountain
> Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
> ---
>  drivers/infiniband/sw/rxe/rxe_queue.c |  5 ++---
>  drivers/infiniband/sw/rxe/rxe_verbs.c | 23 ++++++-----------------
>  2 files changed, 8 insertions(+), 20 deletions(-)
> 
> diff --git a/drivers/infiniband/sw/rxe/rxe_queue.c b/drivers/infiniband/sw/rxe/rxe_queue.c
> index d6dbf5a0058d..9611ee191a46 100644
> --- a/drivers/infiniband/sw/rxe/rxe_queue.c
> +++ b/drivers/infiniband/sw/rxe/rxe_queue.c
> @@ -61,11 +61,11 @@ struct rxe_queue *rxe_queue_init(struct rxe_dev *rxe, int *num_elem,
>  
>  	/* num_elem == 0 is allowed, but uninteresting */
>  	if (*num_elem < 0)
> -		goto err1;
> +		return NULL;
>  
>  	q = kzalloc(sizeof(*q), GFP_KERNEL);
>  	if (!q)
> -		goto err1;
> +		return NULL;
>  
>  	q->rxe = rxe;
>  	q->type = type;
> @@ -100,7 +100,6 @@ struct rxe_queue *rxe_queue_init(struct rxe_dev *rxe, int *num_elem,
>  
>  err2:
>  	kfree(q);
> -err1:
>  	return NULL;
>  }
>  
> diff --git a/drivers/infiniband/sw/rxe/rxe_verbs.c b/drivers/infiniband/sw/rxe/rxe_verbs.c
> index 090d5bfb1e18..06f071832635 100644
> --- a/drivers/infiniband/sw/rxe/rxe_verbs.c
> +++ b/drivers/infiniband/sw/rxe/rxe_verbs.c
> @@ -1198,11 +1198,8 @@ static struct ib_mr *rxe_get_dma_mr(struct ib_pd *ibpd, int access)
>  	int err;
>  
>  	mr = kzalloc(sizeof(*mr), GFP_KERNEL);
> -	if (!mr) {
> -		err = -ENOMEM;
> -		rxe_dbg_dev(rxe, "no memory for mr");
> -		goto err_out;
> -	}
> +	if (!mr)
> +		return ERR_PTR(-ENOMEM);
>  
>  	err = rxe_add_to_pool(&rxe->mr_pool, mr);
>  	if (err) {
> @@ -1220,7 +1217,6 @@ static struct ib_mr *rxe_get_dma_mr(struct ib_pd *ibpd, int access)
>  
>  err_free:
>  	kfree(mr);
> -err_out:
>  	rxe_err_pd(pd, "returned err = %d", err);
>  	return ERR_PTR(err);
>  }
> @@ -1235,11 +1231,8 @@ static struct ib_mr *rxe_reg_user_mr(struct ib_pd *ibpd, u64 start,
>  	int err, cleanup_err;
>  
>  	mr = kzalloc(sizeof(*mr), GFP_KERNEL);
> -	if (!mr) {
> -		err = -ENOMEM;
> -		rxe_dbg_pd(pd, "no memory for mr");
> -		goto err_out;
> -	}
> +	if (!mr)
> +		return ERR_PTR(-ENOMEM);
>  
>  	err = rxe_add_to_pool(&rxe->mr_pool, mr);
>  	if (err) {
> @@ -1266,7 +1259,6 @@ static struct ib_mr *rxe_reg_user_mr(struct ib_pd *ibpd, u64 start,
>  		rxe_err_mr(mr, "cleanup failed, err = %d", cleanup_err);
>  err_free:
>  	kfree(mr);
> -err_out:
>  	rxe_err_pd(pd, "returned err = %d", err);
>  	return ERR_PTR(err);
>  }
> @@ -1287,11 +1279,8 @@ static struct ib_mr *rxe_alloc_mr(struct ib_pd *ibpd, enum ib_mr_type mr_type,
>  	}
>  
>  	mr = kzalloc(sizeof(*mr), GFP_KERNEL);
> -	if (!mr) {
> -		err = -ENOMEM;
> -		rxe_dbg_mr(mr, "no memory for mr");
> -		goto err_out;
> -	}
> +	if (!mr)
> +		return ERR_PTR(-ENOMEM);
>  
>  	err = rxe_add_to_pool(&rxe->mr_pool, mr);
>  	if (err) {

These are all fine. Thanks!
Reviewed-by:- Bob Pearson <rpearsonhpe@gmail.com>
Leon Romanovsky March 30, 2023, 6:56 a.m. UTC | #4
On Wed, 29 Mar 2023 21:14:01 +0300, Leon Romanovsky wrote:
> There is no need to print any debug messages after failure to
> allocate memory, because kernel will print OOM dumps anyway.
> 
> Together with removal of these messages, remove useless goto jumps.
> 
> 

Applied, thanks!

[1/1] RDMA/rxe: Clean kzalloc failure paths
      https://git.kernel.org/rdma/rdma/c/b6ba68555d75fd

Best regards,
diff mbox series

Patch

diff --git a/drivers/infiniband/sw/rxe/rxe_queue.c b/drivers/infiniband/sw/rxe/rxe_queue.c
index d6dbf5a0058d..9611ee191a46 100644
--- a/drivers/infiniband/sw/rxe/rxe_queue.c
+++ b/drivers/infiniband/sw/rxe/rxe_queue.c
@@ -61,11 +61,11 @@  struct rxe_queue *rxe_queue_init(struct rxe_dev *rxe, int *num_elem,
 
 	/* num_elem == 0 is allowed, but uninteresting */
 	if (*num_elem < 0)
-		goto err1;
+		return NULL;
 
 	q = kzalloc(sizeof(*q), GFP_KERNEL);
 	if (!q)
-		goto err1;
+		return NULL;
 
 	q->rxe = rxe;
 	q->type = type;
@@ -100,7 +100,6 @@  struct rxe_queue *rxe_queue_init(struct rxe_dev *rxe, int *num_elem,
 
 err2:
 	kfree(q);
-err1:
 	return NULL;
 }
 
diff --git a/drivers/infiniband/sw/rxe/rxe_verbs.c b/drivers/infiniband/sw/rxe/rxe_verbs.c
index 090d5bfb1e18..06f071832635 100644
--- a/drivers/infiniband/sw/rxe/rxe_verbs.c
+++ b/drivers/infiniband/sw/rxe/rxe_verbs.c
@@ -1198,11 +1198,8 @@  static struct ib_mr *rxe_get_dma_mr(struct ib_pd *ibpd, int access)
 	int err;
 
 	mr = kzalloc(sizeof(*mr), GFP_KERNEL);
-	if (!mr) {
-		err = -ENOMEM;
-		rxe_dbg_dev(rxe, "no memory for mr");
-		goto err_out;
-	}
+	if (!mr)
+		return ERR_PTR(-ENOMEM);
 
 	err = rxe_add_to_pool(&rxe->mr_pool, mr);
 	if (err) {
@@ -1220,7 +1217,6 @@  static struct ib_mr *rxe_get_dma_mr(struct ib_pd *ibpd, int access)
 
 err_free:
 	kfree(mr);
-err_out:
 	rxe_err_pd(pd, "returned err = %d", err);
 	return ERR_PTR(err);
 }
@@ -1235,11 +1231,8 @@  static struct ib_mr *rxe_reg_user_mr(struct ib_pd *ibpd, u64 start,
 	int err, cleanup_err;
 
 	mr = kzalloc(sizeof(*mr), GFP_KERNEL);
-	if (!mr) {
-		err = -ENOMEM;
-		rxe_dbg_pd(pd, "no memory for mr");
-		goto err_out;
-	}
+	if (!mr)
+		return ERR_PTR(-ENOMEM);
 
 	err = rxe_add_to_pool(&rxe->mr_pool, mr);
 	if (err) {
@@ -1266,7 +1259,6 @@  static struct ib_mr *rxe_reg_user_mr(struct ib_pd *ibpd, u64 start,
 		rxe_err_mr(mr, "cleanup failed, err = %d", cleanup_err);
 err_free:
 	kfree(mr);
-err_out:
 	rxe_err_pd(pd, "returned err = %d", err);
 	return ERR_PTR(err);
 }
@@ -1287,11 +1279,8 @@  static struct ib_mr *rxe_alloc_mr(struct ib_pd *ibpd, enum ib_mr_type mr_type,
 	}
 
 	mr = kzalloc(sizeof(*mr), GFP_KERNEL);
-	if (!mr) {
-		err = -ENOMEM;
-		rxe_dbg_mr(mr, "no memory for mr");
-		goto err_out;
-	}
+	if (!mr)
+		return ERR_PTR(-ENOMEM);
 
 	err = rxe_add_to_pool(&rxe->mr_pool, mr);
 	if (err) {