From: Oliver Neukum <oliver@neukum.org>
To: Marcel Holtmann <marcel@holtmann.org>
Cc: linux-bluetooth@vger.kernel.org, linux-usb@vger.kernel.org
Subject: Re: [patch]race condition in btusb disconnect() handling
Date: Tue, 19 Aug 2008 15:40:22 +0200 [thread overview]
Message-ID: <200808191540.23072.oliver@neukum.org> (raw)
In-Reply-To: <1219152506.7591.142.camel@violet.holtmann.net>
Am Dienstag 19 August 2008 15:28:26 schrieb Marcel Holtmann:
Hello,
> Hi Oliver,
>
> > > > btusb has some races in disconnect()
> > > >
> > > > - it doesn't deal with only the iso interface disconnected
> > >
> > > It see the point here, but then we have to release the main interface
> > > cleanly or just disable SCO. I would prefer to just disable SCO.
> >
> > The patch disables the main interface. Just disabling SCO means that
> > btusb_data.isoc could no longer be treated as constant and locking for it
> > would be necessary. This seems extravagant for a minor use case.
>
> I am fine with both ways. Will decide which code looks cleaner :)
>
> > > > - it releases the data interface before unregistering the iso interface
> > >
> > > How does this happen? It doesn't do it that way.
> >
> > From your version:
> > if (data->isoc)
> > usb_driver_release_interface(&btusb_driver, data->isoc);
> >
> > usb_set_intfdata(intf, NULL);
> >
> > hci_unregister_dev(hdev);
> >
> > First you release the interface, then you unregister the hci.
>
> Putting it after hci_unregister_dev is an issue. The unregister will
> call __hci_dev_put and then in return will call the destruct callback
> which will free the data pointer.
>
> So either we use hci_dev_hold or make sure that disconnect can only
> disable the SCO interface. That comes directly with the first comment
> from you.
I'll make a patch with hci_dev_hold. It seems the cleaner solution.
Regards
Oliver
next prev parent reply other threads:[~2008-08-19 13:40 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-08-19 12:23 [patch]race condition in btusb disconnect() handling Oliver Neukum
2008-08-19 12:43 ` Marcel Holtmann
2008-08-19 13:09 ` Oliver Neukum
2008-08-19 13:28 ` Marcel Holtmann
2008-08-19 13:40 ` Oliver Neukum [this message]
2008-08-19 14:05 ` Oliver Neukum
2008-08-19 14:31 ` Marcel Holtmann
2008-08-19 15:14 ` Oliver Neukum
2008-08-19 15:27 ` Marcel Holtmann
2008-08-19 15:34 ` Oliver Neukum
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=200808191540.23072.oliver@neukum.org \
--to=oliver@neukum.org \
--cc=linux-bluetooth@vger.kernel.org \
--cc=linux-usb@vger.kernel.org \
--cc=marcel@holtmann.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 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.