Skip to contentSkip to conversation

NAND: Free asprintf()-allocated space upon mtd device deletion.

PATCH In review Robert P. J. Day 2 participants 2 messages Dec 21, 2009

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 NAND: Free asprintf()-allocated space upon mtd device deletion.

Given that add_mtd_device() invokes asprintf() thusly:

  mtd->cdev.name = asprintf("nand%d", mtd->class_dev.id);
  ...
  mtd->param_size.value = asprintf("%u", mtd->size);
  ...
  mtd->cdev_oob.name = asprintf("nand_oob%d", mtd->class_dev.id);

make sure del_mtd_device() frees that in the reverse order.

---

drivers/nand/nand.c +2 -0
index 0a6128c..bcf52bd 100644
@@ -240,7 +240,9 @@ int add_mtd_device(struct mtd_info *mtd)
 int del_mtd_device (struct mtd_info *mtd)
 {
 	unregister_device(&mtd->class_dev);
+	free(mtd->cdev_oob.name);
 	free(mtd->param_size.value);
+	free(mtd->cdev.name);
 	return 0;
 }
 

========================================================================
Robert P. J. Day Waterloo, Ontario, CANADA

Linux Consulting, Training and Kernel Pedantry.

Web page:                                          http://crashcourse.ca
Twitter:                                       http://twitter.com/rpjday

========================================================================

_______________________________________________
barebox mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/barebox

#1 lore raw
Quoted 9 lines · Robert P. J. Day

Given that add_mtd_device() invokes asprintf() thusly:

  mtd->cdev.name = asprintf("nand%d", mtd->class_dev.id);
  ...
  mtd->param_size.value = asprintf("%u", mtd->size);
  ...
  mtd->cdev_oob.name = asprintf("nand_oob%d", mtd->class_dev.id);
Quoted 3 lines

make sure del_mtd_device() frees that in the reverse order.

Ok, applied

Sascha

Quoted 32 lines

---

drivers/nand/nand.c +2 -0
index 0a6128c..bcf52bd 100644
@@ -240,7 +240,9 @@ int add_mtd_device(struct mtd_info *mtd)
 int del_mtd_device (struct mtd_info *mtd)
 {
 	unregister_device(&mtd->class_dev);
+	free(mtd->cdev_oob.name);
 	free(mtd->param_size.value);
+	free(mtd->cdev.name);
 	return 0;
 }
 

========================================================================
Robert P. J. Day Waterloo, Ontario, CANADA

Linux Consulting, Training and Kernel Pedantry.

Web page:                                          http://crashcourse.ca
Twitter:                                       http://twitter.com/rpjday

========================================================================

_______________________________________________
barebox mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/barebox

Signature · 9 lines
Pengutronix e.K.                           |                             |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |

_______________________________________________
barebox mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/barebox