Skip to contentSkip to conversation

mtd: bcm47: convert kzalloc to avoid invalid access

PATCH RESEND In review Libo Chen 4 participants 4 messages May 30, 2013 – Aug 22, 2013 Memory technology devices (MTD)

lore
Share & tools
lore

Libo Chen

author
#0 lore raw

PATCH RESEND 1/2 mtd: bcm47: convert kzalloc to avoid invalid access

mtd is just member of bcm47xxsflash, so we should free bcm47xxsflash not its member. So I use devm_kazlloc instead of kazlloc to avoid it.

* Changelog:
convert to devm_kzalloc

---
 drivers/mtd/devices/bcm47xxsflash.c |   16 ++++------------
 1 files changed, 4 insertions(+), 12 deletions(-)
drivers/mtd/devices/bcm47xxsflash.c +4 -12
index 18e7761..2630d5c 100644
@@ -54,11 +54,9 @@ static int bcm47xxsflash_bcma_probe(struct platform_device *pdev)
 	struct bcm47xxsflash *b47s;
 	int err;
 
-	b47s = kzalloc(sizeof(*b47s), GFP_KERNEL);
-	if (!b47s) {
-		err = -ENOMEM;
-		goto out;
-	}
+	b47s = devm_kzalloc(&pdev->dev, sizeof(*b47s), GFP_KERNEL);
+	if (!b47s)
+		return -ENOMEM;
 	sflash->priv = b47s;
 
 	b47s->bcma_cc = container_of(sflash, struct bcma_drv_cc, sflash);
@@ -81,15 +79,10 @@ static int bcm47xxsflash_bcma_probe(struct platform_device *pdev)
 	err = mtd_device_parse_register(&b47s->mtd, probes, NULL, NULL, 0);
 	if (err) {
 		pr_err("Failed to register MTD device: %d\n", err);
-		goto err_dev_reg;
+		return err;
 	}
 
 	return 0;
-
-err_dev_reg:
-	kfree(&b47s->mtd);
-out:
-	return err;
 }
 
 static int bcm47xxsflash_bcma_remove(struct platform_device *pdev)
@@ -98,7 +91,6 @@ static int bcm47xxsflash_bcma_remove(struct platform_device *pdev)
 	struct bcm47xxsflash *b47s = sflash->priv;
 
 	mtd_device_unregister(&b47s->mtd);
-	kfree(b47s);
 
 	return 0;
 }
Signature · 1 line
1.7.1
Reviewed-by on v1 1/2
#1 lore raw
Quoted 2 lines · Libo Chen

mtd is just member of bcm47xxsflash, so we should free bcm47xxsflash not its member. So I use devm_kazlloc instead of kazlloc to avoid it.

You may amend commit message, but technically you have my

Quoted 45 lines
drivers/mtd/devices/bcm47xxsflash.c +4 -13
index 18e7761..2630d5c 100644
@@ -54,11 +54,9 @@ static int bcm47xxsflash_bcma_probe(struct platform_device *pdev)
        struct bcm47xxsflash *b47s;
        int err;
 
-       b47s = kzalloc(sizeof(*b47s), GFP_KERNEL);
-       if (!b47s) {
-               err = -ENOMEM;
-               goto out;
-       }
+       b47s = devm_kzalloc(&pdev->dev, sizeof(*b47s), GFP_KERNEL);
+       if (!b47s)
+               return -ENOMEM;
        sflash->priv = b47s;
 
        b47s->bcma_cc = container_of(sflash, struct bcma_drv_cc, sflash);
@@ -81,15 +79,10 @@ static int bcm47xxsflash_bcma_probe(struct platform_device *pdev)
        err = mtd_device_parse_register(&b47s->mtd, probes, NULL, NULL, 0);
        if (err) {
                pr_err("Failed to register MTD device: %d\n", err);
-               goto err_dev_reg;
+               return err;
        }
 
        return 0;
-
-err_dev_reg:
-       kfree(&b47s->mtd);
-out:
-       return err;
 }
 
 static int bcm47xxsflash_bcma_remove(struct platform_device *pdev)
@@ -98,7 +91,6 @@ static int bcm47xxsflash_bcma_remove(struct platform_device *pdev)
        struct bcm47xxsflash *b47s = sflash->priv;
 
        mtd_device_unregister(&b47s->mtd);
-       kfree(b47s);
 
        return 0;
 }
--
Quoted 3 lines

1.7.1

--
With Best Regards,
Andy Shevchenko

#2 lore raw
In reply to Libo Chen

2013/5/30 Libo Chen <[email protected]>:

Quoted 2 lines

mtd is just member of bcm47xxsflash, so we should free bcm47xxsflash not its member. So I use devm_kazlloc instead of kazlloc to avoid it.

I think you should use
mtd: bcm47xxsflash:
prefix for both patches, but Artem or David may want to comment on that.

Nice trick with that devm_kzalloc, I didn't know it.

Signature · 1 line
Rafał