From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: himadrispandya@gmail.com, dvyukov@google.com, linux-usb@vger.kernel.org
Cc: perex@perex.cz, tiwai@suse.com, stern@rowland.harvard.ed,
linux-kernel@vger.kernel.org, marcel@holtmann.org,
johan.hedberg@gmail.com, linux-bluetooth@vger.kernel.org,
alsa-devel@alsa-project.org,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Subject: [PATCH 00/10] USB: new USB control message helper functions
Date: Wed, 2 Sep 2020 13:01:02 +0200 [thread overview]
Message-ID: <20200902110115.1994491-1-gregkh@linuxfoundation.org> (raw)
In a recent discussion about a USB networking bug found by syzbot, and
fixed by Himadri Pandya, the design of the existing usb_control_msg()
call was brought up as not being the "nicest" thing to use by Dmitry
Vyukov:
https://lore.kernel.org/r/CACT4Y+YbDODLRFn8M5QcY4CazhpeCaunJnP_udXtAs0rYoASSg@mail.gmail.com
The function makes it hard to get right, in that it will return the
number of bytes sent/received, but almost no one checks to see if a
short read/write happens. With a malicious, or broken, USB device, this
can cause drivers to act on data that they did not anticipate, and
sometimes copy internal kernel data out to userspace.
So let's fix this up by creating two new functions,
usb_control_msg_send() and usb_control_msg_recv(). These functions
either complete the full transation, or they return an error, a short
send/recv is now an error.
They also accept data off of the stack, saving individual drivers the
pain of having to constantly allocate memory on their own for tiny
messages, thereby saving overall kernel code space.
The api also does not require a raw USB "pipe" to be sent to the
function, as we know the direction, so just pass in the endpoint number
instead, again making it easier on the USB driver author to use.
This series first takes a helper function out of the sound core for
verifying USB endpoints to be able to use internally, and then adds the
new functions, converts over some internal USB code to use them, and
then starts to clean up some drivers using these new functions, as an
example of the savings that can happen by using these functions.
Thanks to Dmitry and Himadri for the idea on how to do all of this.
greg k-h
Greg Kroah-Hartman (10):
USB: move snd_usb_pipe_sanity_check into the USB core
USB: add usb_control_msg_send() and usb_control_msg_recv()
USB: core: message.c: use usb_control_msg_send() in a few places
USB: core: hub.c: use usb_control_msg_send() in a few places
USB: legousbtower: use usb_control_msg_recv()
sound: usx2y: move to use usb_control_msg_send()
sound: 6fire: move to use usb_control_msg_send() and
usb_control_msg_recv()
sound: line6: move to use usb_control_msg_send() and
usb_control_msg_recv()
sound: hiface: move to use usb_control_msg_send()
Bluetooth: ath3k: use usb_control_msg_send() and
usb_control_msg_recv()
drivers/bluetooth/ath3k.c | 90 +++++------------
drivers/usb/core/hub.c | 128 +++++++++---------------
drivers/usb/core/message.c | 171 ++++++++++++++++++++++++++++----
drivers/usb/core/urb.c | 29 ++++--
drivers/usb/misc/legousbtower.c | 60 ++++-------
include/linux/usb.h | 7 ++
sound/usb/6fire/firmware.c | 38 +++----
sound/usb/helper.c | 16 +--
sound/usb/helper.h | 1 -
sound/usb/hiface/pcm.c | 14 ++-
sound/usb/line6/driver.c | 69 +++++--------
sound/usb/line6/podhd.c | 17 ++--
sound/usb/line6/toneport.c | 8 +-
sound/usb/mixer_scarlett_gen2.c | 2 +-
sound/usb/quirks.c | 12 +--
sound/usb/usx2y/us122l.c | 42 ++------
16 files changed, 345 insertions(+), 359 deletions(-)
--
2.28.0
next reply other threads:[~2020-09-02 11:02 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-09-02 11:01 Greg Kroah-Hartman [this message]
2020-09-02 11:01 ` [PATCH 01/10] USB: move snd_usb_pipe_sanity_check into the USB core Greg Kroah-Hartman
2020-09-02 14:35 ` Takashi Iwai
2020-09-07 14:42 ` Greg Kroah-Hartman
2020-09-03 0:45 ` Alan Stern
2020-09-03 6:40 ` Takashi Iwai
2020-09-03 7:32 ` Greg Kroah-Hartman
2020-09-07 14:16 ` Greg Kroah-Hartman
2020-09-07 14:24 ` Alan Stern
2020-09-02 11:01 ` [PATCH 02/10] USB: add usb_control_msg_send() and usb_control_msg_recv() Greg Kroah-Hartman
2020-09-02 11:01 ` [PATCH 03/10] USB: core: message.c: use usb_control_msg_send() in a few places Greg Kroah-Hartman
2020-09-02 11:23 ` Andy Shevchenko
2020-09-02 11:01 ` [PATCH 04/10] USB: core: hub.c: " Greg Kroah-Hartman
2020-09-02 14:57 ` Alan Stern
2020-09-02 15:21 ` Greg Kroah-Hartman
2020-09-02 11:01 ` [PATCH 05/10] USB: legousbtower: use usb_control_msg_recv() Greg Kroah-Hartman
2020-09-02 11:01 ` [PATCH 06/10] sound: usx2y: move to use usb_control_msg_send() Greg Kroah-Hartman
2020-09-02 14:36 ` Takashi Iwai
2020-09-02 11:01 ` [PATCH 07/10] sound: 6fire: move to use usb_control_msg_send() and usb_control_msg_recv() Greg Kroah-Hartman
2020-09-02 14:36 ` Takashi Iwai
2020-09-02 11:01 ` [PATCH 7/9] sound: line6: convert to use new usb control function Greg Kroah-Hartman
2020-09-02 14:41 ` Takashi Iwai
2020-09-02 15:22 ` Greg Kroah-Hartman
2020-09-02 11:01 ` [PATCH 8/9] sound: 6fire: move to use new usb control functions Greg Kroah-Hartman
2020-09-02 11:01 ` [PATCH 08/10] sound: line6: move to use usb_control_msg_send() and usb_control_msg_recv() Greg Kroah-Hartman
2020-09-02 14:38 ` Takashi Iwai
2020-09-02 11:01 ` [PATCH 9/9] sound: hiface: convert to use new usb_control functions Greg Kroah-Hartman
2020-09-02 11:01 ` [PATCH 09/10] sound: hiface: move to use usb_control_msg_send() Greg Kroah-Hartman
2020-09-02 14:40 ` Takashi Iwai
2020-09-02 11:01 ` [PATCH 10/10] Bluetooth: ath3k: use usb_control_msg_send() and usb_control_msg_recv() Greg Kroah-Hartman
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=20200902110115.1994491-1-gregkh@linuxfoundation.org \
--to=gregkh@linuxfoundation.org \
--cc=alsa-devel@alsa-project.org \
--cc=dvyukov@google.com \
--cc=himadrispandya@gmail.com \
--cc=johan.hedberg@gmail.com \
--cc=linux-bluetooth@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-usb@vger.kernel.org \
--cc=marcel@holtmann.org \
--cc=perex@perex.cz \
--cc=stern@rowland.harvard.ed \
--cc=tiwai@suse.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).