diff mbox

scsi: qedi: tidy up a size caculation

Message ID 20180628092310.ta2qzatghjtgnzx7@kili.mountain (mailing list archive)
State Accepted
Headers show

Commit Message

Dan Carpenter June 28, 2018, 9:23 a.m. UTC
The id_tbl->table pointer points to unsigned long so static checkers
complain that instead of 4 we should be allocating sizeof(long) bytes.

We're trying to allocate enough bits for the bitmap.  The size variable
is always 1024.  (1024 / 32 * 4) is the same as (1024 / 64 * 8) so this
doesn't change runtime, but this is the more idiomatic way to do it and
makes the static checker happy.

Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>

Comments

Rangankar, Manish June 28, 2018, 3:15 p.m. UTC | #1
> -----Original Message-----
> From: Dan Carpenter <dan.carpenter@oracle.com>
> Sent: Thursday, June 28, 2018 2:53 PM
> To: Dept-Eng QLogic Storage Upstream <QLogic-Storage-
> Upstream@cavium.com>; Rangankar, Manish
> <Manish.Rangankar@cavium.com>
> Cc: James E.J. Bottomley <jejb@linux.vnet.ibm.com>; Martin K. Petersen
> <martin.petersen@oracle.com>; linux-scsi@vger.kernel.org; kernel-
> janitors@vger.kernel.org
> Subject: [PATCH] scsi: qedi: tidy up a size caculation
> 
> External Email
> 
> The id_tbl->table pointer points to unsigned long so static checkers complain
> that instead of 4 we should be allocating sizeof(long) bytes.
> 
> We're trying to allocate enough bits for the bitmap.  The size variable is always
> 1024.  (1024 / 32 * 4) is the same as (1024 / 64 * 8) so this doesn't change
> runtime, but this is the more idiomatic way to do it and makes the static checker
> happy.
> 
> Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
> 
> diff --git a/drivers/scsi/qedi/qedi_main.c b/drivers/scsi/qedi/qedi_main.c index
> cf274a79e77a..682f3ce31014 100644
> --- a/drivers/scsi/qedi/qedi_main.c
> +++ b/drivers/scsi/qedi/qedi_main.c
> @@ -524,7 +524,7 @@ static int qedi_init_id_tbl(struct qedi_portid_tbl *id_tbl,
> u16 size,
>         id_tbl->max = size;
>         id_tbl->next = next;
>         spin_lock_init(&id_tbl->lock);
> -       id_tbl->table = kcalloc(DIV_ROUND_UP(size, 32), 4, GFP_KERNEL);
> +       id_tbl->table = kcalloc(BITS_TO_LONGS(size), sizeof(long),
> + GFP_KERNEL);
>         if (!id_tbl->table)
>                 return -ENOMEM;

Thanks,

Acked-by: Manish Rangankar <Manish.Rangankar@cavium.com>
Martin K. Petersen July 2, 2018, 8:17 p.m. UTC | #2
Dan,

> The id_tbl->table pointer points to unsigned long so static checkers
> complain that instead of 4 we should be allocating sizeof(long) bytes.
>
> We're trying to allocate enough bits for the bitmap.  The size variable
> is always 1024.  (1024 / 32 * 4) is the same as (1024 / 64 * 8) so this
> doesn't change runtime, but this is the more idiomatic way to do it and
> makes the static checker happy.

Applied to 4.19/scsi-queue, thanks!
diff mbox

Patch

diff --git a/drivers/scsi/qedi/qedi_main.c b/drivers/scsi/qedi/qedi_main.c
index cf274a79e77a..682f3ce31014 100644
--- a/drivers/scsi/qedi/qedi_main.c
+++ b/drivers/scsi/qedi/qedi_main.c
@@ -524,7 +524,7 @@  static int qedi_init_id_tbl(struct qedi_portid_tbl *id_tbl, u16 size,
 	id_tbl->max = size;
 	id_tbl->next = next;
 	spin_lock_init(&id_tbl->lock);
-	id_tbl->table = kcalloc(DIV_ROUND_UP(size, 32), 4, GFP_KERNEL);
+	id_tbl->table = kcalloc(BITS_TO_LONGS(size), sizeof(long), GFP_KERNEL);
 	if (!id_tbl->table)
 		return -ENOMEM;