[PATCH} fix defect with kobject memory leaks during del_gendisk

From: Steven Dake
Date: Wed Sep 24 2003 - 18:03:01 EST


Folks,

Attached is a patch which fixes a few memory leaks in 2.6.0-test5.
Comments are welcome as to whether or not this patch is the right
solution.

I added the ability to linux MD to generate add and remove hotplug calls
on RAID START and STOPs. To achieve this, I use the del_gendisk call
which deletes the gendisk, delete the children kobjects, and delete the
parent (in this case, mdX) kobject.

Unfortunately it appears that del_gendisk uses kobject_del to delete the
kobject. If the kobject has a ktype release function, it is not called
in the kobject_del call path, but only in kobject_unregister.

This patch changes the functionality so the release function (in this
case the block device release function in drivers/block/genhd.c) is
called by changing the kobject_del to kobject_unregister.

Without this patch, at least 3 memory leaks occur on removal of a block
device using the del_gendisk function.

Thanks
-steve
--- linux-2.6.0-test5/fs/partitions/check.c 2003-09-08 12:50:28.000000000 -0700
+++ linux-fixmd/fs/partitions/check.c 2003-09-24 15:28:57.000000000 -0700
@@ -458,5 +458,5 @@
sysfs_remove_link(&disk->driverfs_dev->kobj, "block");
put_device(disk->driverfs_dev);
}
- kobject_del(&disk->kobj);
+ kobject_unregister(&disk->kobj);
}