public inbox for linux-bluetooth@vger.kernel.org
 help / color / mirror / Atom feed
From: Greg KH <gregkh@linuxfoundation.org>
To: Luiz Augusto von Dentz <luiz.dentz@gmail.com>
Cc: Hsin-chen Chuang <chharry@google.com>,
	linux-bluetooth@vger.kernel.org,
	chromeos-bluetooth-upstreaming@chromium.org,
	Hsin-chen Chuang <chharry@chromium.org>,
	"David S. Miller" <davem@davemloft.net>,
	Eric Dumazet <edumazet@google.com>,
	Jakub Kicinski <kuba@kernel.org>,
	Johan Hedberg <johan.hedberg@gmail.com>,
	Marcel Holtmann <marcel@holtmann.org>,
	Paolo Abeni <pabeni@redhat.com>, Simon Horman <horms@kernel.org>,
	Ying Hsu <yinghsu@chromium.org>,
	linux-kernel@vger.kernel.org, netdev@vger.kernel.org
Subject: Re: [PATCH v4 1/3] Bluetooth: Fix possible race with userspace of sysfs isoc_alt
Date: Thu, 13 Feb 2025 17:05:30 +0100	[thread overview]
Message-ID: <2025021338-freewill-nimbly-7218@gregkh> (raw)
In-Reply-To: <CABBYNZJSwQJ-KWacoXDGVJ5gni260FTi=XEpNw3ER2CJhpVrKg@mail.gmail.com>

On Thu, Feb 13, 2025 at 10:56:46AM -0500, Luiz Augusto von Dentz wrote:
> Hi Greg,
> 
> On Thu, Feb 13, 2025 at 10:39 AM Greg KH <gregkh@linuxfoundation.org> wrote:
> >
> > On Thu, Feb 13, 2025 at 09:22:28AM -0500, Luiz Augusto von Dentz wrote:
> > > Hi Greg,
> > >
> > > On Thu, Feb 13, 2025 at 8:45 AM Greg KH <gregkh@linuxfoundation.org> wrote:
> > > >
> > > > On Thu, Feb 13, 2025 at 09:33:34PM +0800, Hsin-chen Chuang wrote:
> > > > > On Thu, Feb 13, 2025 at 8:10 PM Greg KH <gregkh@linuxfoundation.org> wrote:
> > > > > >
> > > > > > A: http://en.wikipedia.org/wiki/Top_post
> > > > > > Q: Were do I find info about this thing called top-posting?
> > > > > > A: Because it messes up the order in which people normally read text.
> > > > > > Q: Why is top-posting such a bad thing?
> > > > > > A: Top-posting.
> > > > > > Q: What is the most annoying thing in e-mail?
> > > > > >
> > > > > > A: No.
> > > > > > Q: Should I include quotations after my reply?
> > > > > >
> > > > > > http://daringfireball.net/2007/07/on_top
> > > > > >
> > > > > > On Thu, Feb 13, 2025 at 07:57:15PM +0800, Hsin-chen Chuang wrote:
> > > > > > > The btusb driver data is allocated by devm_kzalloc and is
> > > > > > > automatically freed on driver detach, so I guess we don't have
> > > > > > > anything to do here.
> > > > > >
> > > > > > What?  A struct device should NEVER be allocated with devm_kzalloc.
> > > > > > That's just not going to work at all.
> > > > >
> > > > > Noted. Perhaps that needs to be refactored together.
> > > > >
> > > > > >
> > > > > > > Or perhaps we should move btusb_disconnect's content here? Luiz, what
> > > > > > > do you think?
> > > > > >
> > > > > > I think something is really wrong here.  Why are you adding a new struct
> > > > > > device to the system?  What requires that?  What is this new device
> > > > > > going to be used for?
> > > > >
> > > > > The new device is only for exposing a new sysfs attribute.
> > > >
> > > > That feels crazy.
> > > >
> > > > > So originally we had a device called hci_dev, indicating the
> > > > > implementation of the Bluetooth HCI layer. hci_dev is directly the
> > > > > child of the usb_interface (the Bluetooth chip connected through USB).
> > > > > Now I would like to add an attribute for something that's not defined
> > > > > in the HCI layer, but lower layer only in Bluetooth USB.
> > > > > Thus we want to rephrase the structure: usb_interface -> btusb (new
> > > > > device) -> hci_dev, and then we could place the new attribute in the
> > > > > new device.
> > > > >
> > > > > Basically I kept the memory management in btusb unchanged in this
> > > > > patch, as the new device is only used for a new attribute.
> > > > > Would you suggest we revise the memory management since we added a
> > > > > device in this module?
> > > >
> > > > If you add a new device in the tree, it HAS to work properly with the
> > > > driver core (i.e. life cycles are unique, you can't have empty release
> > > > functions, etc.)  Put it on the proper bus it belongs to, bind the
> > > > needed drivers to it, and have it work that way, don't make a "fake"
> > > > device for no good reason.
> > >
> > > Well we could just introduce it to USB device, since alternate setting
> > > is a concept that is coming from there, but apparently the likes of
> > > /sys/bus/usb/devices/usbX/bAlternateSetting is read-only, some
> > > Bluetooth profiles (HFP) requires switching the alternate setting and
> > > because Google is switching to handle this via userspace thus why
> > > there was this request to add a new sysfs to control it.
> >
> > That's fine, just don't add devices where there shouldn't be devices, or
> > if you do, make them actually work properly (i.e. do NOT have empty
> > release callbacks...)
> >
> > If you want to switch alternate settings in a USB device, do it the
> > normal way from userspace that has been there for decades!  Don't make
> > up some other random sysfs file for this please, that would be crazy,
> > and wrong.
> >
> > So what's wrong with the current api we have today that doesn't work for
> > bluetooth devices?
> 
> Perhaps it is just lack of knowledge then, how userspace can request
> to switch alternate settings? If I recall correctly Hsin-chen tried
> with libusb, or something like that, but it didn't work for some
> reason.

The USBDEVFS_SETINTERFACE usbfs ioctl should do this.  If not, pleaase
let us know.  libusb supports this through the
libusb_set_interface_alt_setting() function.

Here's an 11 year old stackoverflow question about this:
	https://stackoverflow.com/questions/17546709/what-does-libusb-set-interface-alt-setting-do

thanks,

greg k-h

      reply	other threads:[~2025-02-13 16:05 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-02-13  3:43 [PATCH v4 1/3] Bluetooth: Fix possible race with userspace of sysfs isoc_alt Hsin-chen Chuang
2025-02-13  3:44 ` [PATCH v4 2/3] Bluetooth: Always allow SCO packets for user channel Hsin-chen Chuang
2025-02-13  3:44 ` [PATCH v4 3/3] Bluetooth: Add ABI doc for sysfs isoc_alt Hsin-chen Chuang
2025-02-13 10:01   ` Greg KH
2025-02-13 10:07     ` Hsin-chen Chuang
2025-02-13 10:13       ` Greg KH
2025-02-13 10:14         ` Hsin-chen Chuang
2025-02-13  4:34 ` [v4,1/3] Bluetooth: Fix possible race with userspace of " bluez.test.bot
2025-02-13 10:01 ` [PATCH v4 1/3] " Greg KH
2025-02-13 11:57   ` Hsin-chen Chuang
2025-02-13 12:10     ` Greg KH
2025-02-13 13:33       ` Hsin-chen Chuang
2025-02-13 13:45         ` Greg KH
2025-02-13 14:06           ` Hsin-chen Chuang
2025-02-13 14:22           ` Luiz Augusto von Dentz
2025-02-13 14:35             ` Greg KH
2025-02-13 15:56               ` Luiz Augusto von Dentz
2025-02-13 16:05                 ` Greg KH [this message]

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=2025021338-freewill-nimbly-7218@gregkh \
    --to=gregkh@linuxfoundation.org \
    --cc=chharry@chromium.org \
    --cc=chharry@google.com \
    --cc=chromeos-bluetooth-upstreaming@chromium.org \
    --cc=davem@davemloft.net \
    --cc=edumazet@google.com \
    --cc=horms@kernel.org \
    --cc=johan.hedberg@gmail.com \
    --cc=kuba@kernel.org \
    --cc=linux-bluetooth@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=luiz.dentz@gmail.com \
    --cc=marcel@holtmann.org \
    --cc=netdev@vger.kernel.org \
    --cc=pabeni@redhat.com \
    --cc=yinghsu@chromium.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