Re: [GIT PATCHES FOR 2.6.37] Move V4L2 locking into the core framework

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

 



On Friday, October 15, 2010 18:49:47 David Ellingsworth wrote:
> On Mon, Oct 11, 2010 at 2:05 PM, David Ellingsworth
> <david@xxxxxxxxxxxxxxxxx> wrote:
> > On Mon, Oct 11, 2010 at 11:40 AM, Hans Verkuil <hverkuil@xxxxxxxxx> wrote:
> >> On Sunday, October 10, 2010 19:33:48 David Ellingsworth wrote:
> >>> Hans,
> >>>
> >>> On Sun, Sep 26, 2010 at 8:25 AM, Hans Verkuil <hverkuil@xxxxxxxxx> wrote:
> >>> > Hi Mauro,
> >>> >
> >>> > These are the locking patches. It's based on my previous test tree, but with
> >>> > more testing with em28xx and radio-mr800 and some small tweaks relating to
> >>> > disconnect handling and video_is_registered().
> >>> >
> >>> > I also removed the unused get_unmapped_area file op and I am now blocking
> >>> > any further (unlocked_)ioctl calls after the device node is unregistered.
> >>> > The only things an application can do legally after a disconnect is unmap()
> >>> > and close().
> >>> >
> >>> > This patch series also contains a small em28xx fix that I found while testing
> >>> > the em28xx BKL removal patch.
> >>> >
> >>> > Regards,
> >>> >
> >>> >        Hans
> >>> >
> >>> > The following changes since commit dace3857de7a16b83ae7d4e13c94de8e4b267d2a:
> >>> >  Hans Verkuil (1):
> >>> >        V4L/DVB: tvaudio: remove obsolete tda8425 initialization
> >>> >
> >>> > are available in the git repository at:
> >>> >
> >>> >  ssh://linuxtv.org/git/hverkuil/v4l-dvb.git bkl
> >>> >
> >>> > Hans Verkuil (10):
> >>> >      v4l2-dev: after a disconnect any ioctl call will be blocked.
> >>> >      v4l2-dev: remove get_unmapped_area
> >>> >      v4l2: add core serialization lock.
> >>> >      videobuf: prepare to make locking optional in videobuf
> >>> >      videobuf: add ext_lock argument to the queue init functions
> >>> >      videobuf: add queue argument to videobuf_waiton()
> >>> >      vivi: remove BKL.
> >>> >      em28xx: remove BKL.
> >>> >      em28xx: the default std was not passed on to the subdevs
> >>> >      radio-mr800: remove BKL
> >>>
> >>> Did you even test these patches?
> >>
> >> Yes, I did test. And it works for me. But you are correct in that it shouldn't
> >> work since the struct will indeed be freed. I'll fix this and post a patch.
> >>
> >> I'm not sure why it works fine when I test it.
> >>
> >> There is a problem as well with unlocking before unregistering the device in
> >> that it leaves a race condition where another app can open the device again
> >> before it is registered. I have to think about that some more.
> >
> > Actually, no this problem did not exist. The previous version of the
> > driver cleared the USB device member to indicate that the device had
> > been disconnected. During open, if the USB device member was null, it
> > aborted with -EIO. If there's a race there now, it's only because you
> > introduced it.
> >
> > One thing I noticed while looking at this driver is that there's a
> > call to usb_autopm_put_interface in usb_amradio_close. I'm not sure if
> > it's a problem or not, but is it valid to call that after the device
> > has been disconnected? I only ask, because it wasn't called in
> > previous versions if the driver was disconnected before all handles to
> > the device were closed. If it's incorrect to call it within this
> > context, then this introduces another bug as well. It seems logical
> > that for every get there should be a put, but I don't know in this
> > case.
> 
> Just came across this in power-management.txt kernel documentation:
> 
> 343	Drivers need not be concerned about balancing changes to the usage
> 344	counter; the USB core will undo any remaining "get"s when a driver
> 345	is unbound from its interface.  As a corollary, drivers must not call
> 346	any of the usb_autopm_* functions after their diconnect() routine has
> 347	returned.
> 
> According to this documentation, the usb_autopm_put_interface call in
> usb_amradio_close should not occur if the device has been
> disconnected. The code you removed, used to prevent this special case.
> 
> Regards,
> 
> David Ellingsworth

I'll post a patch fixing these issues this weekend.

Regards,

          Hans

-- 
Hans Verkuil - video4linux developer - sponsored by TANDBERG, part of Cisco
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]
  Powered by Linux