public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* Unbinding drivers for resources that are in use
@ 2011-06-13 15:10 Alan Stern
  2011-06-13 15:42 ` Greg KH
  2011-06-14  6:41 ` Oliver Neukum
  0 siblings, 2 replies; 5+ messages in thread
From: Alan Stern @ 2011-06-13 15:10 UTC (permalink / raw)
  To: Greg KH, Kernel development list; +Cc: Hans de Goede

The kernel prevents modules from being unloaded if they are being used.  
But it doesn't have any analogous mechanism for preventing a driver 
being unbound from a device that's in use.

For example, suppose a SATA disk contains a mounted filesystem.  If the
user writes the corresponding device name to
/sys/bus/scsi/drivers/sd/unbind without unmounting the filesystem, the
drive will become inaccessible and data may be lost.  The same problem
arises with USB devices and programs using usbfs to unbind a device
from its kernel driver.

It's true that the "unbind" attribute has mode 0200 and therefore can 
be written only by the superuser.  Still, this puts the onus on 
userspace to determine whether or not a device is being used.  The 
kernel could easily keep track of this automatically and atomically 
-- userspace can't do this without races.

Therefore I'm asking if the driver core should add a refcount to every
struct device for keeping track of the number of open file references
(or other types of resource) using this device.  If this number is
nonzero, the kernel should prevent the device from being unbound from
its driver -- except of course in cases where the device has been
hot-unplugged; there's nothing we can do to prevent errors when this
happens.

Changes to the refcount would have to propagate up the device tree: If 
a device holds an important resource then we don't want any of the 
device's ancestors to become inaccessible either.  This would be easy 
to implement.

Should we do it?

Alan Stern


^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2011-06-14  7:34 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-06-13 15:10 Unbinding drivers for resources that are in use Alan Stern
2011-06-13 15:42 ` Greg KH
2011-06-13 17:50   ` Hans de Goede
2011-06-13 19:15     ` Greg KH
2011-06-14  6:41 ` Oliver Neukum

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox