> It looks like the video drivers include a "struct video_device"
> structure within their own structures, right?
Yes, it is allocated/freed by the driver, most seem to simply include
one ore more "struct video_device" somewhere in the per-device struct.
> That will have to be changed to a pointer to that structure in order
> for the lifetime rules to work properly.
Hmm. I doubt it will be that simple. struct video_device has a priv
field which can be used by the drivers to hook in some driver-private
data. That may point into nowhere if struct video_device has a longer
live time due to some kobject still being referenced. Wouldn't be a
issue for videodev.o itself, but might become a problem for drivers
which want add private properties and rely on video_device->priv
for finding the per-device data. Problem isn't solved but justed
moved to the next corner ...
Maybe let video_unregister sleep on a semaphore which gets woken up
by the release function? That should make sure the sysfs objects are
not referenced any more if video_unregister() returns. I use a similar
method in some places when shutting down kernel threads, to make sure it
is really stopped before rmmod frees the memory.
> Look at the dev file in /sys/class/tty/*, or in /sys/block/hd* or in
> /sys/class/usb/*, and so on...
I've found the code in drivers/block/genhd.c in the meantime :)
Gerd
-- sigfault - 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/
This archive was generated by hypermail 2b29 : Wed Jul 23 2003 - 22:00:26 EST