From: Adam Baker <linux@baker-net.org.uk>
To: Alan Stern <stern@rowland.harvard.edu>
Cc: kilgota@banach.math.auburn.edu,
"Jean-Francois Moine" <moinejf@free.fr>,
linux-media@vger.kernel.org
Subject: Re: Bug in gspca USB webcam driver
Date: Mon, 2 Feb 2009 21:35:00 +0000 [thread overview]
Message-ID: <200902022135.00908.linux@baker-net.org.uk> (raw)
In-Reply-To: <Pine.LNX.4.44L0.0902021558280.10089-100000@iolanthe.rowland.org>
On Monday 02 February 2009, Alan Stern wrote:
> On Mon, 2 Feb 2009 kilgota@banach.math.auburn.edu wrote:
> > The attached file is an extract from dmesg from the Pentium4 Dual Core
> > machine. One can see that the camera has been attached, and then an svv
> > session has been run. The kernel is the "stock" Slackware 2.6.27.7 kernel
> > (*). We have a situation, again, in which svv (**) can not be exited. We
> > have an oops in the log, and we have a filesystem check on reboot, which
> > is going on as I write this.
>
> Well, the problem is clear enough, and it is in the gspca.c module, not
> your sq905-3 driver. I'm not sure what the best way is to fix it, so
> I'm CC'ing the people responsible for the gspca driver.
>
Thanks for confirming that Alan. I'd been looking at this too and suspected
this was the case but as it wouldn't fail on my uniprocessor machine I
couldn't prove it. (Theodore, if you can generate the log we discussed of
this failing it might still be helpful in tracking down the underlying
problem.)
> To summarize: Unplugging the camera while it is in use by a program
> causes an oops (particularly on an SMP machine).
>
> The problem is that gspca_stream_off() calls destroy_urbs(), which in
> turn calls usb_buffer_free() -- but this happens too late, after
> gspca_disconnect() has returned. By that time gspca_dev->dev is a
> stale pointer, so it shouldn't be passed to usb_buffer_free().
>
By my reading it should be OK for gspca_disconnect to have returned as long as
video_unregister_device waits for the last close to complete before calling
gspca_release. I know that there were some patches a while back that
attempted to ensure that was the case so I suspect there is still a hole
there.
> What should happen is that as part of disconnect processing, the
> existing stream(s) should be put in an error state and destroy_urbs()
> should be called immediately. Then when gspca_stream_off() calls
> destroy_urbs() again there would be no more work left to do.
>
> Alan Stern
>
Adam Baker
next prev parent reply other threads:[~2009-02-02 21:35 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <alpine.LNX.2.00.0902021207550.32604@banach.math.auburn.edu>
2009-02-02 21:15 ` Bug in gspca USB webcam driver Alan Stern
2009-02-02 21:35 ` Adam Baker [this message]
2009-02-02 21:59 ` Alan Stern
2009-02-02 22:40 ` kilgota
2009-02-02 23:28 ` Adam Baker
2009-02-03 0:31 ` kilgota
2009-02-03 3:37 ` Alan Stern
2009-02-02 22:53 ` kilgota
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=200902022135.00908.linux@baker-net.org.uk \
--to=linux@baker-net.org.uk \
--cc=kilgota@banach.math.auburn.edu \
--cc=linux-media@vger.kernel.org \
--cc=moinejf@free.fr \
--cc=stern@rowland.harvard.edu \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.