Messages in this thread | | | From | Dmitry Torokhov <> | Subject | Re: [PATCH] EDAC: core EDAC support code | Date | Tue, 7 Mar 2006 20:03:41 -0500 |
| |
On Tuesday 07 March 2006 12:04, Greg KH wrote: > On Tue, Mar 07, 2006 at 08:47:44AM -0800, Dave Peterson wrote: > > Ok, how does this sound: > > > > - Modify EDAC so it uses kmalloc() to create the kobject. > > - Eliminate edac_memctrl_master_release(). Instead, use kfree() as > > the release method for the kobject. Here, it's important to use a > > function -outside- of EDAC as the release method since the core > > EDAC module may have been unloaded by the time the release method > > is called. > > No, if this happens then you are using the kobject incorrectly. How > could it be held if your module is unloaded? Don't you have the module > reference counting logic correct? >
It is pretty hard to implement kobject handling correctly. Consider the following:
rmmod device_driver < /sys/devices/pci0000:00/...../power/state
for a driver that creates/destroys device objects. Opening 'state' attribute will pin device structure into memory but will not increase _your_ module's refcount. It is nice if you have a subsystem core split from drivers code - then you can keep core module reference until device objects are gone and allow individual drivers be unloaded freely. But for single-module system it is pretty hard, that's why platform devices are popular.
-- Dmitry - 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/
| |