linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Alan Stern <stern@rowland.harvard.edu>
To: Duncan Sands <baldrick@free.fr>
Cc: David Brownell <david-b@pacbell.net>, Vince <fuzzy77@free.fr>,
	"Randy.Dunlap" <rddunlap@osdl.org>, <mfedyk@matchmail.com>,
	<zwane@holomorphy.com>, <linux-kernel@vger.kernel.org>,
	USB development list <linux-usb-devel@lists.sourceforge.net>
Subject: Re: [linux-usb-devel] Re: [OOPS,  usbcore, releaseintf] 2.6.0-test10-mm1
Date: Mon, 8 Dec 2003 16:32:15 -0500 (EST)	[thread overview]
Message-ID: <Pine.LNX.4.44L0.0312081538510.2034-100000@ida.rowland.org> (raw)
In-Reply-To: <200312082053.25541.baldrick@free.fr>

On Mon, 8 Dec 2003, Duncan Sands wrote:

> > If you would keep the ps->devsem lock, would there be any problem in
> > setting ps->dev to NULL to indicate disconnection?
> 
> You can't keep the ps->devsem lock and use ps->dev->serialize, because it
> leads to deadlock.

How so?  Remember that I am almost totally unfamiliar with the details of 
the usbfs code.  Are you saying there are places where the driver holds 
one lock and needs to acquire the other and vice versa?

>  Actually, simply replacing ps->devsem with ps->dev->serialize
> cannot lead to any new deadlocks, it makes deadlocks that could occasionally
> happen always happen (such deadlocks exist right now in usbfs).  Some of the
> current deadlocks can be eliminated without giving up ps->devsem, but not all.
> So the question is: must ps->dev->serialize be used?

It must be held when you call usb_reset_configuration().  It must _not_ be
held when you call usb_set_configuration().  For usb_reset_device() right
now you must not hold it, although that may change in the future.  For
usb_unbind_interface() you must not hold it.  There's a note that
usb_driver_claim_interface() grabs the BKL for some reason having to do
with usbfs -- no doubt when usbfs is fixed that won't be needed and the 
caller will be required to hold dev->serialize instead.

If you call usb_ifnum_to_if() you ought to hold the serialize lock; 
otherwise the configuration might change out from under you.  But it's not 
necessary.  Likewise for usb_epnum_to_ep_desc if you're looking up an 
endpoint that isn't part of an interface you have bound.

> > Are they any reasons for not keeping ps->devsem?  Since usbfs generally
> > acts as a driver and drivers generally don't have to concern themselves
> > with usbdev->serialize (the core handles it for them), shouldn't usbfs
> > also be able to ignore ps->dev->serialize?
> 
> No, because it needs to do operations on interfaces it hasn't claimed (such
> as looking them up and claiming them).  This is why it needs to protect
> itself, at least momentarily, against configurations shifting under it.  This
> can be done by using the BKL more.  However it can be done more simply
> using ps->dev->serialize (in fact it is simpler than what is there now).

That agrees with my assessment.  It ought to be possible to remove these 
references to the BKL in favor of ps->dev->serialize.


> By the way, if it is somehow fatal to do usb_put_dev after disconnect,
> what is the point of referencing counting at all?  You might as well
> free up the usb_device structure immediately after disconnect, since
> there is sure to be a reference before disconnect, and (apparently)
> there had better not be a reference after disconnect...

There's some sort of misunderstanding here.  It's not fatal to do 
usb_put_dev() after disconnect, provided you called usb_get_dev() earlier.
I'm not sure what the cause was of the oops you were getting, but it 
wasn't that.

Alan Stern



  reply	other threads:[~2003-12-08 21:32 UTC|newest]

Thread overview: 113+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-11-26 16:51 [kernel panic @ reboot] 2.6.0-test10-mm1 Vince
2003-11-26 17:16 ` Zwane Mwaikambo
2003-11-26 17:34   ` Vince
2003-11-26 17:35     ` Randy.Dunlap
2003-11-26 17:40     ` Zwane Mwaikambo
2003-11-26 17:54       ` Vince
2003-11-26 18:18         ` Zwane Mwaikambo
2003-11-26 23:37           ` Mike Fedyk
2003-11-26 23:41             ` Vince
2003-12-03  0:03               ` Randy.Dunlap
2003-12-03  0:31                 ` Mike Fedyk
2003-12-03  0:27                   ` Randy.Dunlap
2003-12-03 13:28                     ` Vince
2003-12-03 19:12                       ` Zwane Mwaikambo
2003-12-04  1:01                         ` Vince
2003-12-04  1:34                           ` Mike Fedyk
2003-12-04  4:11                             ` Randy.Dunlap
2003-12-04 10:59                               ` [OOPS, usbcore, releaseintf] 2.6.0-test10-mm1 Vince
2003-12-04 11:14                                 ` Duncan Sands
2003-12-04 16:57                                   ` Randy.Dunlap
2003-12-05  7:38                                     ` Duncan Sands
2003-12-05 10:11                                       ` Vince
2003-12-05 10:18                                         ` Duncan Sands
2003-12-05 10:34                                           ` Vince
2003-12-07  0:25                                         ` Duncan Sands
2003-12-07 21:09                                           ` Vince
2003-12-07 21:24                                             ` Duncan Sands
2003-12-07 22:24                                               ` Vince
2003-12-07 22:54                                               ` Vince
2003-12-08 10:10                                                 ` Duncan Sands
2003-12-08 16:03                                                   ` [linux-usb-devel] " David Brownell
2003-12-08 16:15                                                     ` Duncan Sands
2003-12-08 16:31                                                       ` Alan Stern
2003-12-08 17:20                                                         ` David Brownell
2003-12-08 17:59                                                         ` Duncan Sands
2003-12-08 18:35                                                           ` Alan Stern
2003-12-08 19:53                                                             ` Duncan Sands
2003-12-08 21:32                                                               ` Alan Stern [this message]
2003-12-08 21:55                                                                 ` Duncan Sands
2003-12-08 23:09                                                                   ` Alan Stern
2003-12-09 10:23                                                                     ` Duncan Sands
2003-12-09 15:55                                                                       ` Alan Stern
2003-12-09 20:36                                                                         ` Duncan Sands
2003-12-09 10:36                                                                     ` Duncan Sands
2003-12-09 16:08                                                                       ` Alan Stern
2003-12-09 20:24                                                                         ` Duncan Sands
2003-12-09 10:49                                                                     ` Duncan Sands
2003-12-09 15:47                                                                       ` Alan Stern
2003-12-09 21:12                                                                         ` Duncan Sands
2003-12-09 21:58                                                                           ` Alan Stern
2003-12-09 22:07                                                                             ` Duncan Sands
2003-12-09 22:25                                                                               ` David Brownell
2003-12-09 22:33                                                                                 ` Duncan Sands
2003-12-10  3:12                                                                                   ` David Brownell
2003-12-10  3:43                                                                                 ` Alan Stern
2003-12-10 13:12                                                                                   ` Duncan Sands
2003-12-10 15:13                                                                                     ` Alan Stern
2003-12-10 15:30                                                                                   ` Greg KH
2003-12-10 16:02                                                                                     ` Duncan Sands
2003-12-10 20:53                                                                                       ` Greg KH
2003-12-11  8:49                                                                                         ` Duncan Sands
2003-12-11  9:23                                                                                           ` Greg KH
2003-12-11  9:29                                                                                             ` Duncan Sands
2003-12-10 17:25                                                                                     ` Alan Stern
2003-12-10 20:46                                                                                       ` Greg KH
2003-12-10 21:08                                                                                         ` Greg KH
2003-12-11  2:10                                                                                           ` Vince
2003-12-11  6:46                                                                                             ` Greg KH
2003-12-10 22:08                                                                                         ` Alan Stern
2003-12-11  6:47                                                                                           ` Greg KH
2003-12-10  4:31                                                                               ` Vince
2003-12-10  1:49                                                                       ` Greg KH
2003-12-10 13:22                                                                     ` Duncan Sands
2003-12-10 16:20                                                                       ` Oliver Neukum
2003-12-10 16:49                                                                         ` Duncan Sands
2003-12-10 16:58                                                                           ` Oliver Neukum
2003-12-11  9:45                                                                             ` Duncan Sands
2003-12-11 10:19                                                                               ` Oliver Neukum
2003-12-11 21:43                                                                                 ` Duncan Sands
2003-12-11 22:57                                                                                   ` Oliver Neukum
2003-12-11 23:30                                                                                     ` Duncan Sands
2003-12-12  0:02                                                                                     ` David Brownell
2003-12-10 17:34                                                                           ` David Brownell
2003-12-10 17:54                                                                             ` Duncan Sands
2003-12-10 18:19                                                                               ` Alan Stern
2003-12-11  9:36                                                                                 ` Duncan Sands
2003-12-11 15:19                                                                                   ` Alan Stern
2003-12-11 21:23                                                                                     ` Duncan Sands
2003-12-12 15:46                                                                                       ` Alan Stern
2003-12-11 21:29                                                                                     ` Duncan Sands
2003-12-12 16:18                                                                                       ` Alan Stern
2003-12-12 18:37                                                                                         ` David Brownell
2003-12-12 19:17                                                                                           ` Alan Stern
2003-12-12 19:45                                                                                             ` David Brownell
2003-12-12 20:48                                                                                               ` Alan Stern
2003-12-12 21:01                                                                                                 ` Oliver Neukum
2003-12-12 21:27                                                                                                   ` Alan Stern
2003-12-12 23:36                                                                                                     ` Oliver Neukum
2003-12-13  1:10                                                                                                       ` Alan Stern
2003-12-13 11:52                                                                                                         ` Oliver Neukum
2003-12-12 18:50                                                                                         ` Oliver Neukum
2003-12-10 19:43                                                                               ` David Brownell
2003-12-11  9:21                                                                                 ` Duncan Sands
2003-12-10 17:21                                                                       ` David Brownell
2003-12-11  9:42                                                                         ` Duncan Sands
2003-12-12  2:21                                                           ` David Brownell
2003-12-12  8:47                                                             ` Duncan Sands
2003-12-12 15:35                                                             ` bill davidsen
2003-12-05  0:08                               ` [kernel panic @ reboot] 2.6.0-test10-mm1 Zwane Mwaikambo
2003-11-27  0:59           ` [kernel panic @ reboot in usbcore] 2.6.0-test10-mm1 (culprit: modem_run) Vince
2003-11-27  3:13             ` Zwane Mwaikambo
2003-11-27  8:14               ` Vince
2003-11-27  8:11             ` Duncan Sands

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=Pine.LNX.4.44L0.0312081538510.2034-100000@ida.rowland.org \
    --to=stern@rowland.harvard.edu \
    --cc=baldrick@free.fr \
    --cc=david-b@pacbell.net \
    --cc=fuzzy77@free.fr \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-usb-devel@lists.sourceforge.net \
    --cc=mfedyk@matchmail.com \
    --cc=rddunlap@osdl.org \
    --cc=zwane@holomorphy.com \
    /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;
as well as URLs for NNTP newsgroup(s).