Re: [PATCH] scsi: qedi: tidy up a size caculation
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! -- Martin K. Petersen Oracle Linux Engineering
RE: [PATCH] scsi: qedi: tidy up a size caculation
> -Original Message- > From: Dan Carpenter > Sent: Thursday, June 28, 2018 2:53 PM > To: Dept-Eng QLogic Storage Upstream upstr...@cavium.com>; Rangankar, Manish > > Cc: James E.J. Bottomley ; Martin K. Petersen > ; linux-scsi@vger.kernel.org; kernel- > janit...@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 > > 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(_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
[PATCH] scsi: qedi: tidy up a size caculation
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 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(_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;