2020-10-08 09:55:10

by Colin King

[permalink] [raw]
Subject: [PATCH] IB/rdmavt: Fix sizeof mismatch

From: Colin Ian King <[email protected]>

An incorrect sizeof is being used, struct rvt_ibport ** is not correct,
it should be struct rvt_ibport *. Note that since ** is the same size as
* this is not causing any issues. Improve this fix by using
sizeof(*rdi->ports) as this allows us to not even reference the type
of the pointer. Also remove line breaks as the entire statement can
fit on one line.

Addresses-Coverity: ("Sizeof not portable (SIZEOF_MISMATCH)")
Fixes: ff6acd69518e ("IB/rdmavt: Add device structure allocation")
Signed-off-by: Colin Ian King <[email protected]>
---
drivers/infiniband/sw/rdmavt/vt.c | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/drivers/infiniband/sw/rdmavt/vt.c b/drivers/infiniband/sw/rdmavt/vt.c
index f904bb34477a..2d534c450f3c 100644
--- a/drivers/infiniband/sw/rdmavt/vt.c
+++ b/drivers/infiniband/sw/rdmavt/vt.c
@@ -95,9 +95,7 @@ struct rvt_dev_info *rvt_alloc_device(size_t size, int nports)
if (!rdi)
return rdi;

- rdi->ports = kcalloc(nports,
- sizeof(struct rvt_ibport **),
- GFP_KERNEL);
+ rdi->ports = kcalloc(nports, sizeof(*rdi->ports), GFP_KERNEL);
if (!rdi->ports)
ib_dealloc_device(&rdi->ibdev);

--
2.27.0


2020-10-08 20:00:01

by Ira Weiny

[permalink] [raw]
Subject: Re: [PATCH] IB/rdmavt: Fix sizeof mismatch

On Thu, Oct 08, 2020 at 10:52:04AM +0100, Colin King wrote:
> From: Colin Ian King <[email protected]>
>
> An incorrect sizeof is being used, struct rvt_ibport ** is not correct,
> it should be struct rvt_ibport *. Note that since ** is the same size as
> * this is not causing any issues. Improve this fix by using
> sizeof(*rdi->ports) as this allows us to not even reference the type
> of the pointer. Also remove line breaks as the entire statement can
> fit on one line.
>
> Addresses-Coverity: ("Sizeof not portable (SIZEOF_MISMATCH)")
> Fixes: ff6acd69518e ("IB/rdmavt: Add device structure allocation")
> Signed-off-by: Colin Ian King <[email protected]>

Reviewed-by: Ira Weiny <[email protected]>

> ---
> drivers/infiniband/sw/rdmavt/vt.c | 4 +---
> 1 file changed, 1 insertion(+), 3 deletions(-)
>
> diff --git a/drivers/infiniband/sw/rdmavt/vt.c b/drivers/infiniband/sw/rdmavt/vt.c
> index f904bb34477a..2d534c450f3c 100644
> --- a/drivers/infiniband/sw/rdmavt/vt.c
> +++ b/drivers/infiniband/sw/rdmavt/vt.c
> @@ -95,9 +95,7 @@ struct rvt_dev_info *rvt_alloc_device(size_t size, int nports)
> if (!rdi)
> return rdi;
>
> - rdi->ports = kcalloc(nports,
> - sizeof(struct rvt_ibport **),
> - GFP_KERNEL);
> + rdi->ports = kcalloc(nports, sizeof(*rdi->ports), GFP_KERNEL);
> if (!rdi->ports)
> ib_dealloc_device(&rdi->ibdev);
>
> --
> 2.27.0
>

2020-10-08 20:30:06

by Dennis Dalessandro

[permalink] [raw]
Subject: Re: [PATCH] IB/rdmavt: Fix sizeof mismatch

On 2020-10-08 05:52, Colin King wrote:

> From: Colin Ian King <[email protected]>
>
> An incorrect sizeof is being used, struct rvt_ibport ** is not correct,
> it should be struct rvt_ibport *. Note that since ** is the same size
> as
> * this is not causing any issues. Improve this fix by using
> sizeof(*rdi->ports) as this allows us to not even reference the type
> of the pointer. Also remove line breaks as the entire statement can
> fit on one line.
>
> Addresses-Coverity: ("Sizeof not portable (SIZEOF_MISMATCH)")
> Fixes: ff6acd69518e ("IB/rdmavt: Add device structure allocation")
> Signed-off-by: Colin Ian King <[email protected]>
> ---
> drivers/infiniband/sw/rdmavt/vt.c | 4 +---
> 1 file changed, 1 insertion(+), 3 deletions(-)
>
> diff --git a/drivers/infiniband/sw/rdmavt/vt.c
> b/drivers/infiniband/sw/rdmavt/vt.c
> index f904bb34477a..2d534c450f3c 100644
> --- a/drivers/infiniband/sw/rdmavt/vt.c
> +++ b/drivers/infiniband/sw/rdmavt/vt.c
> @@ -95,9 +95,7 @@ struct rvt_dev_info *rvt_alloc_device(size_t size,
> int nports)
> if (!rdi)
> return rdi;
>
> - rdi->ports = kcalloc(nports,
> - sizeof(struct rvt_ibport **),
> - GFP_KERNEL);
> + rdi->ports = kcalloc(nports, sizeof(*rdi->ports), GFP_KERNEL);
> if (!rdi->ports)
> ib_dealloc_device(&rdi->ibdev);

Acked-by: Dennis Dalessandro <[email protected]>

2020-10-08 20:50:05

by Jason Gunthorpe

[permalink] [raw]
Subject: Re: [PATCH] IB/rdmavt: Fix sizeof mismatch

On Thu, Oct 08, 2020 at 10:52:04AM +0100, Colin King wrote:
> From: Colin Ian King <[email protected]>
>
> An incorrect sizeof is being used, struct rvt_ibport ** is not correct,
> it should be struct rvt_ibport *. Note that since ** is the same size as
> * this is not causing any issues. Improve this fix by using
> sizeof(*rdi->ports) as this allows us to not even reference the type
> of the pointer. Also remove line breaks as the entire statement can
> fit on one line.
>
> Addresses-Coverity: ("Sizeof not portable (SIZEOF_MISMATCH)")
> Fixes: ff6acd69518e ("IB/rdmavt: Add device structure allocation")
> Signed-off-by: Colin Ian King <[email protected]>
> Reviewed-by: Ira Weiny <[email protected]>
> Acked-by: Dennis Dalessandro <[email protected]>
> ---
> drivers/infiniband/sw/rdmavt/vt.c | 4 +---
> 1 file changed, 1 insertion(+), 3 deletions(-)

Applied to for-next, thanks

Jason