* Re: [PATCH] infiniband/hw/hfi1/tid_rdma: use kmalloc_array_node()
2024-07-25 7:17 [PATCH] infiniband/hw/hfi1/tid_rdma: use kmalloc_array_node() flyingpenghao
@ 2024-07-25 11:58 ` Zhu Yanjun
2024-07-25 13:46 ` Dean Luick
2024-07-28 7:53 ` Leon Romanovsky
2 siblings, 0 replies; 5+ messages in thread
From: Zhu Yanjun @ 2024-07-25 11:58 UTC (permalink / raw)
To: flyingpenghao, dennis.dalessandro, leon; +Cc: linux-rdma, Peng Hao
在 2024/7/25 9:17, flyingpenghao@gmail.com 写道:
> From: Peng Hao <flyingpeng@tencent.com>
>
> kmalloc_array_node() is a NUMA-aware version of kmalloc_array that
> has overflow checking and can be used as a replacement for kmalloc_node.
>
> Signed-off-by: Peng Hao <flyingpeng@tencent.com>
> ---
> drivers/infiniband/hw/hfi1/tid_rdma.c | 2 +-
drivers/infiniband/sw/rdmavt/mmap.c:124:
ip = kmalloc_node(sizeof(*ip), GFP_KERNEL, rdi->dparms.node);
In the above file, not sure if this kmalloc_node needs to be replaced
with kmalloc_array_node or not.
Zhu Yanjun
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/infiniband/hw/hfi1/tid_rdma.c b/drivers/infiniband/hw/hfi1/tid_rdma.c
> index c465966a1d9c..6b1921f6280b 100644
> --- a/drivers/infiniband/hw/hfi1/tid_rdma.c
> +++ b/drivers/infiniband/hw/hfi1/tid_rdma.c
> @@ -1636,7 +1636,7 @@ static int hfi1_kern_exp_rcv_alloc_flows(struct tid_rdma_request *req,
>
> if (likely(req->flows))
> return 0;
> - flows = kmalloc_node(MAX_FLOWS * sizeof(*flows), gfp,
> + flows = kmalloc_array_node(MAX_FLOWS, sizeof(*flows), gfp,
> req->rcd->numa_id);
> if (!flows)
> return -ENOMEM;
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] infiniband/hw/hfi1/tid_rdma: use kmalloc_array_node()
2024-07-25 7:17 [PATCH] infiniband/hw/hfi1/tid_rdma: use kmalloc_array_node() flyingpenghao
2024-07-25 11:58 ` Zhu Yanjun
@ 2024-07-25 13:46 ` Dean Luick
2024-07-28 7:52 ` Leon Romanovsky
2024-07-28 7:53 ` Leon Romanovsky
2 siblings, 1 reply; 5+ messages in thread
From: Dean Luick @ 2024-07-25 13:46 UTC (permalink / raw)
To: flyingpenghao, dennis.dalessandro, leon; +Cc: linux-rdma, Peng Hao
On 7/25/2024 2:17 AM, flyingpenghao@gmail.com wrote:
> From: Peng Hao <flyingpeng@tencent.com>
>
> kmalloc_array_node() is a NUMA-aware version of kmalloc_array that
> has overflow checking and can be used as a replacement for kmalloc_node.
>
> Signed-off-by: Peng Hao <flyingpeng@tencent.com>
> ---
> drivers/infiniband/hw/hfi1/tid_rdma.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/infiniband/hw/hfi1/tid_rdma.c b/drivers/infiniband/hw/hfi1/tid_rdma.c
> index c465966a1d9c..6b1921f6280b 100644
> --- a/drivers/infiniband/hw/hfi1/tid_rdma.c
> +++ b/drivers/infiniband/hw/hfi1/tid_rdma.c
> @@ -1636,7 +1636,7 @@ static int hfi1_kern_exp_rcv_alloc_flows(struct tid_rdma_request *req,
>
> if (likely(req->flows))
> return 0;
> - flows = kmalloc_node(MAX_FLOWS * sizeof(*flows), gfp,
> + flows = kmalloc_array_node(MAX_FLOWS, sizeof(*flows), gfp,
> req->rcd->numa_id);
> if (!flows)
> return -ENOMEM;
This is clearly not going to overflow. I see no reason to change it.
However, I don't know the current policy on such replacements.
-Dean
External recipient
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] infiniband/hw/hfi1/tid_rdma: use kmalloc_array_node()
2024-07-25 13:46 ` Dean Luick
@ 2024-07-28 7:52 ` Leon Romanovsky
0 siblings, 0 replies; 5+ messages in thread
From: Leon Romanovsky @ 2024-07-28 7:52 UTC (permalink / raw)
To: Dean Luick; +Cc: flyingpenghao, dennis.dalessandro, linux-rdma, Peng Hao
On Thu, Jul 25, 2024 at 08:46:30AM -0500, Dean Luick wrote:
> On 7/25/2024 2:17 AM, flyingpenghao@gmail.com wrote:
> > From: Peng Hao <flyingpeng@tencent.com>
> >
> > kmalloc_array_node() is a NUMA-aware version of kmalloc_array that
> > has overflow checking and can be used as a replacement for kmalloc_node.
> >
> > Signed-off-by: Peng Hao <flyingpeng@tencent.com>
> > ---
> > drivers/infiniband/hw/hfi1/tid_rdma.c | 2 +-
> > 1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/drivers/infiniband/hw/hfi1/tid_rdma.c b/drivers/infiniband/hw/hfi1/tid_rdma.c
> > index c465966a1d9c..6b1921f6280b 100644
> > --- a/drivers/infiniband/hw/hfi1/tid_rdma.c
> > +++ b/drivers/infiniband/hw/hfi1/tid_rdma.c
> > @@ -1636,7 +1636,7 @@ static int hfi1_kern_exp_rcv_alloc_flows(struct tid_rdma_request *req,
> >
> > if (likely(req->flows))
> > return 0;
> > - flows = kmalloc_node(MAX_FLOWS * sizeof(*flows), gfp,
> > + flows = kmalloc_array_node(MAX_FLOWS, sizeof(*flows), gfp,
> > req->rcd->numa_id);
> > if (!flows)
> > return -ENOMEM;
>
> This is clearly not going to overflow. I see no reason to change it.
>
> However, I don't know the current policy on such replacements.
There is no policy. My preference is to change if other changes are done in
the same area, but do not change something that is not broken.
Thanks
>
> -Dean
>
> External recipient
>
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] infiniband/hw/hfi1/tid_rdma: use kmalloc_array_node()
2024-07-25 7:17 [PATCH] infiniband/hw/hfi1/tid_rdma: use kmalloc_array_node() flyingpenghao
2024-07-25 11:58 ` Zhu Yanjun
2024-07-25 13:46 ` Dean Luick
@ 2024-07-28 7:53 ` Leon Romanovsky
2 siblings, 0 replies; 5+ messages in thread
From: Leon Romanovsky @ 2024-07-28 7:53 UTC (permalink / raw)
To: flyingpenghao; +Cc: dennis.dalessandro, linux-rdma, Peng Hao
On Thu, Jul 25, 2024 at 03:17:16PM +0800, flyingpenghao@gmail.com wrote:
> From: Peng Hao <flyingpeng@tencent.com>
>
> kmalloc_array_node() is a NUMA-aware version of kmalloc_array that
> has overflow checking and can be used as a replacement for kmalloc_node.
Original code is correct, the overflow is not going to happen.
Thanks
>
> Signed-off-by: Peng Hao <flyingpeng@tencent.com>
> ---
> drivers/infiniband/hw/hfi1/tid_rdma.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/infiniband/hw/hfi1/tid_rdma.c b/drivers/infiniband/hw/hfi1/tid_rdma.c
> index c465966a1d9c..6b1921f6280b 100644
> --- a/drivers/infiniband/hw/hfi1/tid_rdma.c
> +++ b/drivers/infiniband/hw/hfi1/tid_rdma.c
> @@ -1636,7 +1636,7 @@ static int hfi1_kern_exp_rcv_alloc_flows(struct tid_rdma_request *req,
>
> if (likely(req->flows))
> return 0;
> - flows = kmalloc_node(MAX_FLOWS * sizeof(*flows), gfp,
> + flows = kmalloc_array_node(MAX_FLOWS, sizeof(*flows), gfp,
> req->rcd->numa_id);
> if (!flows)
> return -ENOMEM;
> --
> 2.27.0
>
^ permalink raw reply [flat|nested] 5+ messages in thread