From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: stable@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
patches@lists.linux.dev, Alan Stern <stern@rowland.harvard.edu>,
Troels Liebe Bentsen <troels@connectedcars.dk>
Subject: [PATCH 6.2 16/16] USB: core: Dont hold device lock while reading the "descriptors" sysfs file
Date: Wed, 1 Mar 2023 19:07:52 +0100 [thread overview]
Message-ID: <20230301180653.909856882@linuxfoundation.org> (raw)
In-Reply-To: <20230301180653.263532453@linuxfoundation.org>
From: Alan Stern <stern@rowland.harvard.edu>
commit 45bf39f8df7f05efb83b302c65ae3b9bc92b7065 upstream.
Ever since commit 83e83ecb79a8 ("usb: core: get config and string
descriptors for unauthorized devices") was merged in 2013, there has
been no mechanism for reallocating the rawdescriptors buffers in
struct usb_device after the initial enumeration. Before that commit,
the buffers would be deallocated when a device was deauthorized and
reallocated when it was authorized and enumerated.
This means that the locking in the read_descriptors() routine is not
needed, since the buffers it reads will never be reallocated while the
routine is running. This locking can interfere with user programs
trying to read a hub's descriptors via sysfs while new child devices
of the hub are being initialized, since the hub is locked during this
procedure.
Since the locking in read_descriptors() hasn't been needed for over
nine years, we can remove it.
Reported-and-tested-by: Troels Liebe Bentsen <troels@connectedcars.dk>
Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
CC: stable@vger.kernel.org
Link: https://lore.kernel.org/r/Y9l+wDTRbuZABzsE@rowland.harvard.edu
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/usb/core/hub.c | 5 ++---
drivers/usb/core/sysfs.c | 5 -----
2 files changed, 2 insertions(+), 8 deletions(-)
--- a/drivers/usb/core/hub.c
+++ b/drivers/usb/core/hub.c
@@ -2389,9 +2389,8 @@ static int usb_enumerate_device_otg(stru
* usb_enumerate_device - Read device configs/intfs/otg (usbcore-internal)
* @udev: newly addressed device (in ADDRESS state)
*
- * This is only called by usb_new_device() and usb_authorize_device()
- * and FIXME -- all comments that apply to them apply here wrt to
- * environment.
+ * This is only called by usb_new_device() -- all comments that apply there
+ * apply here wrt to environment.
*
* If the device is WUSB and not authorized, we don't attempt to read
* the string descriptors, as they will be errored out by the device
--- a/drivers/usb/core/sysfs.c
+++ b/drivers/usb/core/sysfs.c
@@ -869,11 +869,7 @@ read_descriptors(struct file *filp, stru
size_t srclen, n;
int cfgno;
void *src;
- int retval;
- retval = usb_lock_device_interruptible(udev);
- if (retval < 0)
- return -EINTR;
/* The binary attribute begins with the device descriptor.
* Following that are the raw descriptor entries for all the
* configurations (config plus subsidiary descriptors).
@@ -898,7 +894,6 @@ read_descriptors(struct file *filp, stru
off -= srclen;
}
}
- usb_unlock_device(udev);
return count - nleft;
}
next prev parent reply other threads:[~2023-03-01 18:09 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-03-01 18:07 [PATCH 6.2 00/16] 6.2.2-rc1 review Greg Kroah-Hartman
2023-03-01 18:07 ` [PATCH 6.2 01/16] ALSA: hda: cs35l41: Correct error condition handling Greg Kroah-Hartman
2023-03-01 18:07 ` [PATCH 6.2 02/16] crypto: arm64/sm4-gcm - Fix possible crash in GCM cryption Greg Kroah-Hartman
2023-03-01 18:07 ` [PATCH 6.2 03/16] bpf: bpf_fib_lookup should not return neigh in NUD_FAILED state Greg Kroah-Hartman
2023-03-01 18:07 ` [PATCH 6.2 04/16] vc_screen: dont clobber return value in vcs_read Greg Kroah-Hartman
2023-03-01 18:07 ` [PATCH 6.2 05/16] drm/amd/display: Move DCN314 DOMAIN power control to DMCUB Greg Kroah-Hartman
2023-03-01 18:07 ` [PATCH 6.2 06/16] drm/amd/display: Properly reuse completion structure Greg Kroah-Hartman
2023-03-01 18:07 ` [PATCH 6.2 07/16] scripts/tags.sh: fix incompatibility with PCRE2 Greg Kroah-Hartman
2023-03-01 18:07 ` [PATCH 6.2 08/16] wifi: rtw88: usb: Set qsel correctly Greg Kroah-Hartman
2023-03-01 18:07 ` [PATCH 6.2 09/16] wifi: rtw88: usb: send Zero length packets if necessary Greg Kroah-Hartman
2023-03-01 18:07 ` [PATCH 6.2 10/16] wifi: rtw88: usb: drop now unnecessary URB size check Greg Kroah-Hartman
2023-03-01 18:07 ` [PATCH 6.2 11/16] usb: dwc3: pci: add support for the Intel Meteor Lake-M Greg Kroah-Hartman
2023-03-01 18:07 ` [PATCH 6.2 12/16] USB: serial: option: add support for VW/Skoda "Carstick LTE" Greg Kroah-Hartman
2023-03-01 18:07 ` [PATCH 6.2 13/16] usb: gadget: u_serial: Add null pointer check in gserial_resume Greg Kroah-Hartman
2023-03-01 18:07 ` [PATCH 6.2 14/16] arm64: dts: uniphier: Fix property name in PXs3 USB node Greg Kroah-Hartman
2023-03-01 18:07 ` [PATCH 6.2 15/16] usb: typec: pd: Remove usb_suspend_supported sysfs from sink PDO Greg Kroah-Hartman
2023-03-01 18:07 ` Greg Kroah-Hartman [this message]
2023-03-01 22:50 ` [PATCH 6.2 00/16] 6.2.2-rc1 review Florian Fainelli
2023-03-01 23:24 ` Justin Forbes
2023-03-02 1:42 ` Shuah Khan
2023-03-02 2:16 ` Bagas Sanjaya
2023-03-02 7:27 ` Jon Hunter
2023-03-02 10:21 ` Conor Dooley
2023-03-02 11:40 ` Sudip Mukherjee (Codethink)
2023-03-02 17:23 ` Ron Economos
2023-03-02 19:25 ` Naresh Kamboju
2023-03-02 23:16 ` Slade Watkins
2023-03-03 1:31 ` Guenter Roeck
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=20230301180653.909856882@linuxfoundation.org \
--to=gregkh@linuxfoundation.org \
--cc=patches@lists.linux.dev \
--cc=stable@vger.kernel.org \
--cc=stern@rowland.harvard.edu \
--cc=troels@connectedcars.dk \
/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