[lkml]   [2004]   [Jan]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
SubjectRe: PATCH: (as177) Add class_device_unregister_wait() and platform_device_unregister_wait() to the driver model core
On Fri, 23 Jan 2004, Linus Torvalds wrote:

> On Fri, 23 Jan 2004, Alan Stern wrote:
> >
> > Since I haven't seen any progress towards implementing the
> > class_device_unregister_wait() and platform_device_unregister_wait()
> > functions, here is my attempt.
> So why would this not deadlock?

Kind of a general question, so I'll give a general answer. This wouldn't
deadlock for the same reason as anything else: People use it properly!

> The reason we don't wait on things like this is that it's basically
> impossible not to deadlock.

That's an exaggeration. There are places where it's _necessary_ to
wait. For example, consider this extract from a recent patch written by
Greg KH:

+ /* FIXME change this when the driver core gets the
+ * class_device_unregister_wait() call */
+ init_completion(&bus->released);
+ wait_for_completion(&bus->released);

For the full patch, see

The general context is that a module is trying to unload, but it can't
until the release() callback for its device has finished.

> There are damn good reasons why the kernel uses reference counting
> everywhere. Any other approach is broken.

And sometimes a part of the kernel has to wait until the reference count
drops to 0. Instead of making everyone who needs to wait for a
class_device or a platform_device roll their own completions, this
provides a central facility.

By the way, adding class_device_unregister_wait() has an excellent
precedent. The driver model core _already_ includes
device_unregister_wait(), merged by Pat Mochel. Are you saying that
function shouldn't exist either?

Alan Stern

To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to
More majordomo info at
Please read the FAQ at

 \ /
  Last update: 2005-03-22 14:00    [W:0.467 / U:0.016 seconds]
©2003-2018 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site