usb: Do not re-read descriptors for wired devices in usb_authorize_device()
authorJosef Gajdusek <atx@atx.name>
Thu, 9 Oct 2014 13:47:54 +0000 (15:47 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 3 Nov 2014 23:34:00 +0000 (15:34 -0800)
commite50a322e517731de5d1f6f3aad0a73f3b506c5ea
treeb7cd7b8f14db325687649f08fe4ba4d7298eead7
parentdd3cf17488b102092014e517b4f18f24e5e3d4aa
usb: Do not re-read descriptors for wired devices in usb_authorize_device()

This patch modifies the usb_authorize_device() function such as that it does
not reload the device descriptor for wired devices. The reasons for this
are as follows:

* Some devices dislike the master requesting the descriptor from them twice,
  failing on the usb_get_device_descriptor() call with -ETIMEOUT. Observed this
  on my Pretec 16GB flash drive (4146:ba65).

* Malicious device could send two different descriptors - one before
  authorization, used by userspace to determine whether to authorize it and
  second to be actually used by the kernel when determining which drivers to
  bind.

Signed-off-by: Josef Gajdusek <atx@atx.name>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/core/hub.c