2017-03-08 12:44:46

by SF Markus Elfring

[permalink] [raw]
Subject: [PATCH 02/26] IB/ocrdma: Use kcalloc() in ocrdma_mbx_alloc_pd_range()

From: Markus Elfring <[email protected]>
Date: Tue, 7 Mar 2017 18:23:54 +0100

* Multiplications for the size determination of memory allocations
indicated that array data structures should be processed.
Thus reuse the corresponding function "kcalloc".

This issue was detected by using the Coccinelle software.

* Delete the local variable "pd_bitmap_size" which became unnecessary with
this refactoring.

Signed-off-by: Markus Elfring <[email protected]>
---
drivers/infiniband/hw/ocrdma/ocrdma_hw.c | 16 ++++++++--------
1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/drivers/infiniband/hw/ocrdma/ocrdma_hw.c b/drivers/infiniband/hw/ocrdma/ocrdma_hw.c
index cbac41b15d94..d5a3127b6df8 100644
--- a/drivers/infiniband/hw/ocrdma/ocrdma_hw.c
+++ b/drivers/infiniband/hw/ocrdma/ocrdma_hw.c
@@ -1505,7 +1505,6 @@ int ocrdma_mbx_dealloc_pd(struct ocrdma_dev *dev, struct ocrdma_pd *pd)
static int ocrdma_mbx_alloc_pd_range(struct ocrdma_dev *dev)
{
int status = -ENOMEM;
- size_t pd_bitmap_size;
struct ocrdma_alloc_pd_range *cmd;
struct ocrdma_alloc_pd_range_rsp *rsp;

@@ -1527,10 +1526,10 @@ static int ocrdma_mbx_alloc_pd_range(struct ocrdma_dev *dev)
dev->pd_mgr->pd_dpp_start = rsp->dpp_page_pdid &
OCRDMA_ALLOC_PD_RNG_RSP_START_PDID_MASK;
dev->pd_mgr->max_dpp_pd = rsp->pd_count;
- pd_bitmap_size =
- BITS_TO_LONGS(rsp->pd_count) * sizeof(long);
- dev->pd_mgr->pd_dpp_bitmap = kzalloc(pd_bitmap_size,
- GFP_KERNEL);
+ dev->pd_mgr->pd_dpp_bitmap
+ = kcalloc(BITS_TO_LONGS(rsp->pd_count),
+ sizeof(long),
+ GFP_KERNEL);
}
kfree(cmd);
}
@@ -1546,9 +1545,10 @@ static int ocrdma_mbx_alloc_pd_range(struct ocrdma_dev *dev)
dev->pd_mgr->pd_norm_start = rsp->dpp_page_pdid &
OCRDMA_ALLOC_PD_RNG_RSP_START_PDID_MASK;
dev->pd_mgr->max_normal_pd = rsp->pd_count;
- pd_bitmap_size = BITS_TO_LONGS(rsp->pd_count) * sizeof(long);
- dev->pd_mgr->pd_norm_bitmap = kzalloc(pd_bitmap_size,
- GFP_KERNEL);
+ dev->pd_mgr->pd_norm_bitmap
+ = kcalloc(BITS_TO_LONGS(rsp->pd_count),
+ sizeof(long),
+ GFP_KERNEL);
}
kfree(cmd);

--
2.12.0


2017-03-08 14:03:36

by Yuval Shaia

[permalink] [raw]
Subject: Re: [PATCH 02/26] IB/ocrdma: Use kcalloc() in ocrdma_mbx_alloc_pd_range()

On Wed, Mar 08, 2017 at 01:41:00PM +0100, SF Markus Elfring wrote:
> From: Markus Elfring <[email protected]>
> Date: Tue, 7 Mar 2017 18:23:54 +0100
>
> * Multiplications for the size determination of memory allocations
> indicated that array data structures should be processed.
> Thus reuse the corresponding function "kcalloc".
>
> This issue was detected by using the Coccinelle software.
>
> * Delete the local variable "pd_bitmap_size" which became unnecessary with
> this refactoring.
>
> Signed-off-by: Markus Elfring <[email protected]>
> ---
> drivers/infiniband/hw/ocrdma/ocrdma_hw.c | 16 ++++++++--------
> 1 file changed, 8 insertions(+), 8 deletions(-)
>
> diff --git a/drivers/infiniband/hw/ocrdma/ocrdma_hw.c b/drivers/infiniband/hw/ocrdma/ocrdma_hw.c
> index cbac41b15d94..d5a3127b6df8 100644
> --- a/drivers/infiniband/hw/ocrdma/ocrdma_hw.c
> +++ b/drivers/infiniband/hw/ocrdma/ocrdma_hw.c
> @@ -1505,7 +1505,6 @@ int ocrdma_mbx_dealloc_pd(struct ocrdma_dev *dev, struct ocrdma_pd *pd)
> static int ocrdma_mbx_alloc_pd_range(struct ocrdma_dev *dev)
> {
> int status = -ENOMEM;
> - size_t pd_bitmap_size;
> struct ocrdma_alloc_pd_range *cmd;
> struct ocrdma_alloc_pd_range_rsp *rsp;
>
> @@ -1527,10 +1526,10 @@ static int ocrdma_mbx_alloc_pd_range(struct ocrdma_dev *dev)
> dev->pd_mgr->pd_dpp_start = rsp->dpp_page_pdid &
> OCRDMA_ALLOC_PD_RNG_RSP_START_PDID_MASK;
> dev->pd_mgr->max_dpp_pd = rsp->pd_count;
> - pd_bitmap_size =
> - BITS_TO_LONGS(rsp->pd_count) * sizeof(long);
> - dev->pd_mgr->pd_dpp_bitmap = kzalloc(pd_bitmap_size,
> - GFP_KERNEL);
> + dev->pd_mgr->pd_dpp_bitmap
> + = kcalloc(BITS_TO_LONGS(rsp->pd_count),
> + sizeof(long),
> + GFP_KERNEL);

kzalloc gives "clean" buffer.
Just making sure that it is fine with you if the array is not "clean".
(looking at _ocrdma_pd_mgr_get_bitmap i think it should).

> }
> kfree(cmd);
> }
> @@ -1546,9 +1545,10 @@ static int ocrdma_mbx_alloc_pd_range(struct ocrdma_dev *dev)
> dev->pd_mgr->pd_norm_start = rsp->dpp_page_pdid &
> OCRDMA_ALLOC_PD_RNG_RSP_START_PDID_MASK;
> dev->pd_mgr->max_normal_pd = rsp->pd_count;
> - pd_bitmap_size = BITS_TO_LONGS(rsp->pd_count) * sizeof(long);
> - dev->pd_mgr->pd_norm_bitmap = kzalloc(pd_bitmap_size,
> - GFP_KERNEL);
> + dev->pd_mgr->pd_norm_bitmap
> + = kcalloc(BITS_TO_LONGS(rsp->pd_count),
> + sizeof(long),
> + GFP_KERNEL);
> }
> kfree(cmd);
>
> --
> 2.12.0
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
> the body of a message to [email protected]
> More majordomo info at http://vger.kernel.org/majordomo-info.html

2017-04-20 20:41:28

by Doug Ledford

[permalink] [raw]
Subject: Re: [PATCH 02/26] IB/ocrdma: Use kcalloc() in ocrdma_mbx_alloc_pd_range()

On Wed, 2017-03-08 at 16:03 +0200, Yuval Shaia wrote:
> On Wed, Mar 08, 2017 at 01:41:00PM +0100, SF Markus Elfring wrote:
> >
> > From: Markus Elfring <[email protected]>
> > Date: Tue, 7 Mar 2017 18:23:54 +0100
> >
> > * Multiplications for the size determination of memory allocations
> >   indicated that array data structures should be processed.
> >   Thus reuse the corresponding function "kcalloc".
> >
> >   This issue was detected by using the Coccinelle software.
> >
> > * Delete the local variable "pd_bitmap_size" which became
> > unnecessary with
> >   this refactoring.
> >
> > Signed-off-by: Markus Elfring <[email protected]>
> > ---
> >  drivers/infiniband/hw/ocrdma/ocrdma_hw.c | 16 ++++++++--------
> >  1 file changed, 8 insertions(+), 8 deletions(-)
> >
> > diff --git a/drivers/infiniband/hw/ocrdma/ocrdma_hw.c
> > b/drivers/infiniband/hw/ocrdma/ocrdma_hw.c
> > index cbac41b15d94..d5a3127b6df8 100644
> > --- a/drivers/infiniband/hw/ocrdma/ocrdma_hw.c
> > +++ b/drivers/infiniband/hw/ocrdma/ocrdma_hw.c
> > @@ -1505,7 +1505,6 @@ int ocrdma_mbx_dealloc_pd(struct ocrdma_dev
> > *dev, struct ocrdma_pd *pd)
> >  static int ocrdma_mbx_alloc_pd_range(struct ocrdma_dev *dev)
> >  {
> >   int status = -ENOMEM;
> > - size_t pd_bitmap_size;
> >   struct ocrdma_alloc_pd_range *cmd;
> >   struct ocrdma_alloc_pd_range_rsp *rsp;
> >  
> > @@ -1527,10 +1526,10 @@ static int ocrdma_mbx_alloc_pd_range(struct
> > ocrdma_dev *dev)
> >   dev->pd_mgr->pd_dpp_start = rsp-
> > >dpp_page_pdid &
> >   OCRDMA_ALLOC_PD_RNG_RSP_ST
> > ART_PDID_MASK;
> >   dev->pd_mgr->max_dpp_pd = rsp->pd_count;
> > - pd_bitmap_size =
> > - BITS_TO_LONGS(rsp->pd_count) *
> > sizeof(long);
> > - dev->pd_mgr->pd_dpp_bitmap =
> > kzalloc(pd_bitmap_size,
> > -      GFP_K
> > ERNEL);
> > + dev->pd_mgr->pd_dpp_bitmap
> > + = kcalloc(BITS_TO_LONGS(rsp-
> > >pd_count),
> > + sizeof(lon
> > g),
> > + GFP_KERNEL
> > );
>
> kzalloc gives "clean" buffer.
> Just making sure that it is fine with you if the array is not
> "clean".
> (looking at _ocrdma_pd_mgr_get_bitmap i think it should).

kcalloc is documented to return memory set to 0.

> >
> >   }
> >   kfree(cmd);
> >   }
> > @@ -1546,9 +1545,10 @@ static int ocrdma_mbx_alloc_pd_range(struct
> > ocrdma_dev *dev)
> >   dev->pd_mgr->pd_norm_start = rsp->dpp_page_pdid &
> >   OCRDMA_ALLOC_PD_RNG_RSP_ST
> > ART_PDID_MASK;
> >   dev->pd_mgr->max_normal_pd = rsp->pd_count;
> > - pd_bitmap_size = BITS_TO_LONGS(rsp->pd_count) *
> > sizeof(long);
> > - dev->pd_mgr->pd_norm_bitmap =
> > kzalloc(pd_bitmap_size,
> > -       GFP_KERNEL);
> > + dev->pd_mgr->pd_norm_bitmap
> > + = kcalloc(BITS_TO_LONGS(rsp->pd_count),
> > + sizeof(long),
> > + GFP_KERNEL);
> >   }
> >   kfree(cmd);
> >  
> > -- 
> > 2.12.0
> >
> > --
> > To unsubscribe from this list: send the line "unsubscribe linux-
> > rdma" in
> > the body of a message to [email protected]
> > More majordomo info at  http://vger.kernel.org/majordomo-info.html
--
Doug Ledford <[email protected]>
    GPG KeyID: B826A3330E572FDD
   
Key fingerprint = AE6B 1BDA 122B 23B4 265B  1274 B826 A333 0E57 2FDD