Re: dev->release = (void (*)(struct device *))kfree;

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Oct 25, 2005 at 02:36:21PM +1000, Benjamin Herrenschmidt wrote:
> On Mon, 2005-10-24 at 20:10 -0700, Pete Zaitcev wrote:
> > I seem to recall the discussion about this, but very dimly. Would someone
> > be so kind to remind me, why the attached patch cannot be used?
> 
> If your struct device becomes a member of your vmlogrdr_priv structure,
> then you need to tie the lifetime of that structure to the one of the
> struct device kobject. Thus, you need to provide a "release" callback
> that frees your entire vmlogrdr_priv structure and of course not free it
> yourself (but simply consider it lost after you have called
> device_unregister).
> 
> In addition, if you are in the module, you get into funky issues since
> you must make sure your free routine doesn't "go away" with your module
> before the object is freed (it may be held a long time in memory by some
> userland thing opening a sysfs file to it). If you set the owner field
> of the kobj, your module should be held there (but may become totally
> un-rmmod'able in some circumstances, how fun...)
> 
> If you need to keep your vmlogrdr_priv structure around a little while
> longer after device_unregister(), just increase it's refcount before
> doing device_unregister() and drop it when you don't need it anymore. It
> will still be unregistered (removed from the various lists) but the
> release() callback won't be called until the last user.

For the same reason I tried several times to _introduce_ the 
"dev->release = (void (*)(struct device *))kfree" stuff in the zfcp device
driver, but Greg objected every time that it wouldn't be necessary.
I still disagree with him and that's why the zfcp module doesn't have a
module_exit function :)

Heiko
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux