lkml.org 
[lkml]   [2003]   [Sep]   [25]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
SubjectRe: [PATCH} fix defect with kobject memory leaks during del_gendisk
From
Date
On Thu, 2003-09-25 at 10:26, Patrick Mochel wrote:
> > 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.
>
> It is not the right thing to do, as Christoph pointed out. Gendisks have a
> lifetime longer than the time between add_disk() and del_gendisk(). They
> are created before they are added, and the objects may persist longer
> after they have been removed from view.
>
> To delete the last reference, the MD layer should be calling put_disk(),
> which will trigger release to happen.
>
> Your patch will actually cause other bugs, since the final put_disk() of
> other block drivers will now be called on already freed memory.
>
>
> Pat
>
>
Thanks good call.. Didn't see the put_disk call but it makes sense now.

-steve

-
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/

\
 
 \ /
  Last update: 2005-03-22 13:48    [W:0.060 / U:0.124 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site