From: Sarah Sharp <sarah.a.sharp@linux.intel.com>
To: Petko Manolov <petkan@nucleusys.com>
Cc: Petko Manolov <petkan@users.sourceforge.net>,
linux-usb@vger.kernel.org, Greg KH <gregkh@linuxfoundation.org>,
netdev@vger.kernel.org,
Stephen Hemminger <stephen@networkplumber.org>
Subject: Re: Active URB submitted twice in pegasus driver
Date: Tue, 26 Mar 2013 10:01:40 -0700 [thread overview]
Message-ID: <20130326170140.GC10317@xanatos> (raw)
In-Reply-To: <alpine.DEB.2.02.1303261655450.3724@fry.nucleusys.com>
On Tue, Mar 26, 2013 at 05:22:07PM +0200, Petko Manolov wrote:
> On Mon, 25 Mar 2013, Sarah Sharp wrote:
>
> >Hi Petko,
> >
> >I'm testing a USB to ethernet adapter with Greg's usb-linus branch (based
> >on 3.9-rc4). I'm seeing an odd behavior, and I'm suspicious that a
> >second behavior found by Stephen Hemminger may also be related:
> >
> >http://marc.info/?l=linux-usb&m=136364625519235&w=2
> >
> >When I load the pegasus driver for this adapter (without an ethernet
> >cable hooked to it), and this is on a cold system boot or a complete
> >unloading and reloading of the usbcore, I get the following warning:
>
> Unfortunately the machine i ran my tests on does not have xHCI nor i
> used Greg's tree. I did not observe this warning on both 3.8.4 and
> Linus' 3.9-rc4. It looks like to me that the issue is outside the
> driver code.
Or it could be a race condition that's only triggered by the xHCI driver
(or me having xHCI debugging turned on). Control transfer completions
may be delayed when I have debug turned on.
> However, i am curious whether you experience the same problem with
> other (non-ADMtek based) usb-to-lan adapters which support
> xxx_set_multicast().
The only other USB to ethernet adapter I have is also an ADMteck device:
Bus 001 Device 008: ID 07a6:8513 ADMtek, Inc. AN8513 Ethernet
> These calls are asynchronous by nature and should also trigger this
> warning. Please let me know if this is not the case so i start
> digging into pegasus.c.
What do you mean by an asynchronous call? Do you mean that
xxx_set_multicast() could be called at any time?
After taking a brief glance at the pegasus code, pegasus_set_multicast
looks broken. It sets the control URB status to zero and calls
ctrl_callback(), which does some stuff if the URB status is zero. It
doesn't look like pegasus_set_multicast() is an URB callback function,
so why in the world is it touching a control URB that could possibly be
in flight else where?
It looks like the control URB is used to do things like get or set
registers, so what's stopping the upper layers from calling get
registers (which will submit the control URB and schedule a wait queue),
and then pegasus_set_multicast(), which will go overwrite the active URB
status? USB device drivers should not be writing or reading fields in
a submitted URB until the completion handler's callback function is
called.
Sarah Sharp
next prev parent reply other threads:[~2013-03-26 17:01 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-03-25 22:38 Active URB submitted twice in pegasus driver Sarah Sharp
2013-03-26 15:22 ` Petko Manolov
2013-03-26 17:01 ` Sarah Sharp [this message]
2013-03-26 17:28 ` Petko Manolov
2013-03-26 18:52 ` Sarah Sharp
2013-03-26 20:54 ` Petko Manolov
2013-03-26 21:37 ` Sarah Sharp
2013-03-26 22:26 ` Petko Manolov
2013-04-05 17:01 ` Petko Manolov
2013-04-08 15:49 ` Sarah Sharp
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=20130326170140.GC10317@xanatos \
--to=sarah.a.sharp@linux.intel.com \
--cc=gregkh@linuxfoundation.org \
--cc=linux-usb@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=petkan@nucleusys.com \
--cc=petkan@users.sourceforge.net \
--cc=stephen@networkplumber.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox