Mailing List Archive

[PATCH] xen-blkfront: Use kcalloc instead of kzalloc to allocate array
The advantage of kcalloc is, that will prevent integer overflows which could
result from the multiplication of number of elements and size and it is also
a bit nicer to read.

The semantic patch that makes this change is available
in https://lkml.org/lkml/2011/11/25/107

Signed-off-by: Thomas Meyer <thomas@m3y3r.de>
---

diff -u -p a/drivers/block/cciss_scsi.c b/drivers/block/cciss_scsi.c
--- a/drivers/block/cciss_scsi.c 2011-11-28 19:36:47.343430551 +0100
+++ b/drivers/block/cciss_scsi.c 2011-11-28 19:49:24.922716381 +0100
@@ -534,10 +534,10 @@ adjust_cciss_scsi_table(ctlr_info_t *h,
int nadded, nremoved;
struct Scsi_Host *sh = NULL;

- added = kzalloc(sizeof(*added) * CCISS_MAX_SCSI_DEVS_PER_HBA,
- GFP_KERNEL);
- removed = kzalloc(sizeof(*removed) * CCISS_MAX_SCSI_DEVS_PER_HBA,
+ added = kcalloc(CCISS_MAX_SCSI_DEVS_PER_HBA, sizeof(*added),
GFP_KERNEL);
+ removed = kcalloc(CCISS_MAX_SCSI_DEVS_PER_HBA, sizeof(*removed),
+ GFP_KERNEL);

if (!added || !removed) {
dev_warn(&h->pdev->dev,
@@ -1191,8 +1191,8 @@ cciss_update_non_disk_devices(ctlr_info_

ld_buff = kzalloc(reportlunsize, GFP_KERNEL);
inq_buff = kmalloc(OBDR_TAPE_INQ_SIZE, GFP_KERNEL);
- currentsd = kzalloc(sizeof(*currentsd) *
- (CCISS_MAX_SCSI_DEVS_PER_HBA+1), GFP_KERNEL);
+ currentsd = kcalloc(CCISS_MAX_SCSI_DEVS_PER_HBA + 1,
+ sizeof(*currentsd), GFP_KERNEL);
if (ld_buff == NULL || inq_buff == NULL || currentsd == NULL) {
printk(KERN_ERR "cciss: out of memory\n");
goto out;
diff -u -p a/drivers/block/xen-blkfront.c b/drivers/block/xen-blkfront.c
--- a/drivers/block/xen-blkfront.c 2011-11-13 11:07:22.680095573 +0100
+++ b/drivers/block/xen-blkfront.c 2011-11-28 19:49:29.109460410 +0100
@@ -156,7 +156,7 @@ static int xlbd_reserve_minors(unsigned
if (end > nr_minors) {
unsigned long *bitmap, *old;

- bitmap = kzalloc(BITS_TO_LONGS(end) * sizeof(*bitmap),
+ bitmap = kcalloc(BITS_TO_LONGS(end), sizeof(*bitmap),
GFP_KERNEL);
if (bitmap == NULL)
return -ENOMEM;

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel
Re: [PATCH] xen-blkfront: Use kcalloc instead of kzalloc to allocate array [ In reply to ]
On Tue, Nov 29, 2011 at 10:08:00PM +0100, Thomas Meyer wrote:
> The advantage of kcalloc is, that will prevent integer overflows which could
> result from the multiplication of number of elements and size and it is also
> a bit nicer to read.
>
> The semantic patch that makes this change is available
> in https://lkml.org/lkml/2011/11/25/107
>
> Signed-off-by: Thomas Meyer <thomas@m3y3r.de>
> ---
>
> diff -u -p a/drivers/block/cciss_scsi.c b/drivers/block/cciss_scsi.c
> --- a/drivers/block/cciss_scsi.c 2011-11-28 19:36:47.343430551 +0100
> +++ b/drivers/block/cciss_scsi.c 2011-11-28 19:49:24.922716381 +0100
> @@ -534,10 +534,10 @@ adjust_cciss_scsi_table(ctlr_info_t *h,
> int nadded, nremoved;
> struct Scsi_Host *sh = NULL;
>
> - added = kzalloc(sizeof(*added) * CCISS_MAX_SCSI_DEVS_PER_HBA,
> - GFP_KERNEL);
> - removed = kzalloc(sizeof(*removed) * CCISS_MAX_SCSI_DEVS_PER_HBA,
> + added = kcalloc(CCISS_MAX_SCSI_DEVS_PER_HBA, sizeof(*added),
> GFP_KERNEL);
> + removed = kcalloc(CCISS_MAX_SCSI_DEVS_PER_HBA, sizeof(*removed),
> + GFP_KERNEL);
>

It looks like you mixed two patches together.

> if (!added || !removed) {
> dev_warn(&h->pdev->dev,
> @@ -1191,8 +1191,8 @@ cciss_update_non_disk_devices(ctlr_info_
>
> ld_buff = kzalloc(reportlunsize, GFP_KERNEL);
> inq_buff = kmalloc(OBDR_TAPE_INQ_SIZE, GFP_KERNEL);
> - currentsd = kzalloc(sizeof(*currentsd) *
> - (CCISS_MAX_SCSI_DEVS_PER_HBA+1), GFP_KERNEL);
> + currentsd = kcalloc(CCISS_MAX_SCSI_DEVS_PER_HBA + 1,
> + sizeof(*currentsd), GFP_KERNEL);
> if (ld_buff == NULL || inq_buff == NULL || currentsd == NULL) {
> printk(KERN_ERR "cciss: out of memory\n");
> goto out;
> diff -u -p a/drivers/block/xen-blkfront.c b/drivers/block/xen-blkfront.c
> --- a/drivers/block/xen-blkfront.c 2011-11-13 11:07:22.680095573 +0100
> +++ b/drivers/block/xen-blkfront.c 2011-11-28 19:49:29.109460410 +0100
> @@ -156,7 +156,7 @@ static int xlbd_reserve_minors(unsigned
> if (end > nr_minors) {
> unsigned long *bitmap, *old;
>
> - bitmap = kzalloc(BITS_TO_LONGS(end) * sizeof(*bitmap),
> + bitmap = kcalloc(BITS_TO_LONGS(end), sizeof(*bitmap),
> GFP_KERNEL);

But this parts looks good.

Can you respin it with just that part please?
> if (bitmap == NULL)
> return -ENOMEM;
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel
Re: [PATCH] xen-blkfront: Use kcalloc instead of kzalloc to allocate array [ In reply to ]
On Tue, Nov 29, 2011 at 10:08:00PM +0100, Thomas Meyer wrote:
> The advantage of kcalloc is, that will prevent integer overflows which could
> result from the multiplication of number of elements and size and it is also
> a bit nicer to read.
>
> The semantic patch that makes this change is available
> in https://lkml.org/lkml/2011/11/25/107
>

Thomas,

I put the xen-blkfront part of the patch in my tree and dropped the cciss_scsi one.

> Signed-off-by: Thomas Meyer <thomas@m3y3r.de>
> ---
>
> diff -u -p a/drivers/block/cciss_scsi.c b/drivers/block/cciss_scsi.c
> --- a/drivers/block/cciss_scsi.c 2011-11-28 19:36:47.343430551 +0100
> +++ b/drivers/block/cciss_scsi.c 2011-11-28 19:49:24.922716381 +0100
> @@ -534,10 +534,10 @@ adjust_cciss_scsi_table(ctlr_info_t *h,
> int nadded, nremoved;
> struct Scsi_Host *sh = NULL;
>
> - added = kzalloc(sizeof(*added) * CCISS_MAX_SCSI_DEVS_PER_HBA,
> - GFP_KERNEL);
> - removed = kzalloc(sizeof(*removed) * CCISS_MAX_SCSI_DEVS_PER_HBA,
> + added = kcalloc(CCISS_MAX_SCSI_DEVS_PER_HBA, sizeof(*added),
> GFP_KERNEL);
> + removed = kcalloc(CCISS_MAX_SCSI_DEVS_PER_HBA, sizeof(*removed),
> + GFP_KERNEL);
>
> if (!added || !removed) {
> dev_warn(&h->pdev->dev,
> @@ -1191,8 +1191,8 @@ cciss_update_non_disk_devices(ctlr_info_
>
> ld_buff = kzalloc(reportlunsize, GFP_KERNEL);
> inq_buff = kmalloc(OBDR_TAPE_INQ_SIZE, GFP_KERNEL);
> - currentsd = kzalloc(sizeof(*currentsd) *
> - (CCISS_MAX_SCSI_DEVS_PER_HBA+1), GFP_KERNEL);
> + currentsd = kcalloc(CCISS_MAX_SCSI_DEVS_PER_HBA + 1,
> + sizeof(*currentsd), GFP_KERNEL);
> if (ld_buff == NULL || inq_buff == NULL || currentsd == NULL) {
> printk(KERN_ERR "cciss: out of memory\n");
> goto out;
> diff -u -p a/drivers/block/xen-blkfront.c b/drivers/block/xen-blkfront.c
> --- a/drivers/block/xen-blkfront.c 2011-11-13 11:07:22.680095573 +0100
> +++ b/drivers/block/xen-blkfront.c 2011-11-28 19:49:29.109460410 +0100
> @@ -156,7 +156,7 @@ static int xlbd_reserve_minors(unsigned
> if (end > nr_minors) {
> unsigned long *bitmap, *old;
>
> - bitmap = kzalloc(BITS_TO_LONGS(end) * sizeof(*bitmap),
> + bitmap = kcalloc(BITS_TO_LONGS(end), sizeof(*bitmap),
> GFP_KERNEL);
> if (bitmap == NULL)
> return -ENOMEM;
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel