Re: [patch] v4l: sysfs'ify videodev

From: Gerd Knorr (kraxel@bytesex.org)
Date: Thu Aug 07 2003 - 12:02:11 EST


On Thu, Aug 07, 2003 at 04:55:19PM +0100, Russell King wrote:
> On Thu, Aug 07, 2003 at 05:43:42PM +0200, Gerd Knorr wrote:
> > +static void video_release(struct class_device *cd)
> > +{
> > + struct video_device *vfd = container_of(cd, struct video_device, class_dev);
> >
> > -static struct proc_dir_entry *video_dev_proc_entry = NULL;
> > -struct proc_dir_entry *video_proc_entry = NULL;
> > -EXPORT_SYMBOL(video_proc_entry);
> > -LIST_HEAD(videodev_proc_list);
> > +#if 1 /* needed until all drivers are fixed */
> > + if (!vfd->release)
> > + return;
> > +#endif
> > + vfd->release(vfd);
> > +}
>
> Ok, so you're allowing the release to happen elsewhere. How are you
> ensuring that the code which vfd->release points to hasn't been
> unloaded before the video device has been released,

Which exact corner case you are refering to? video_release() being
called _after_ video_unregister_device() returns due to a sysfs file
being busy? Doesn't sysfs refcounting take care of that? If not
module_{get|put}(vfd->fops->owner) at sensible places should fix that.
get in video_unregister_device(), put in video_release()?

> or, even, how
> are you preventing the module containing the above code being
> removed before all video devices have been released?

videodev.ko simply can't be unloaded while v4l drivers are loaded
due to symbol references.

  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 : Thu Aug 07 2003 - 22:00:39 EST