usb: bugfixes.
-----BEGIN PGP SIGNATURE----- iQIzBAABCgAdFiEEoDKM/7k6F6eZAf59TLbY7tPocTgFAmEvI20ACgkQTLbY7tPo cTgn0w/8D6q00AJLux/xU65314uzibch7KpYFLaIUNnFl/Njuw+44RW2kUkmUVyC fzvsTLi3bmHgqQkYmKz3zAwoSQgKIMwepMxxulfZzp5ieSwETdTPWE9rOkelmeXT iL2B4zjHAuFKd3zQM/DBI2LrVDMfRMcJzTsgswE8eNPdHcFviHB1roqOivS4ET6T rBqlyBUJA7nmHYhx3L/PWlQeXCB/Zozn5lfGvp+adPYm1+wwSreseolEmuhHKyPm oDzV7TS7WWI8Nxr5w1wK9kHOz6ouKDulb4lw+YYQPaGQfQrNImxg5IXYFGCwtcAz zoKmFmzI84+2OI5Pl4iUkaWb2BkuB6NrZ25rhqG53sTxqPF22focwmTxGzxxyUb0 V1+7mOhvcz6Hwtqd17VTzkWTY3K+2Qr8QPoVQ1MQO0Cw2S+Rdqa4Eizn2KvH3tVB Uui97V16OMG4UqzwJusIpvirB/2PND0c0HH0Yh09+Dh3TaR7pU35DcraPjo1o0dh pQ9EB8IFUej6cdid1psx2sGh3q6cXPDO4rMEdibSLzJVFnSqwsYXPXNauZ9RmEWf CvkrkspKVcgIcEKDnT4MgzIhpW/hEybXx9gKho7ltZlPoEVQQvukBy1DAj8ZD03i lTJ6ryS75l8/PJZs9G4qdNtdd1Onf/PhMoxVIyrIoJxW9DHnlSA= =Hfou -----END PGP SIGNATURE----- Merge remote-tracking branch 'remotes/kraxel/tags/usb-20210901-pull-request' into staging usb: bugfixes. # gpg: Signature made Wed 01 Sep 2021 07:53:33 BST # gpg: using RSA key A0328CFFB93A17A79901FE7D4CB6D8EED3E87138 # gpg: Good signature from "Gerd Hoffmann (work) <kraxel@redhat.com>" [full] # gpg: aka "Gerd Hoffmann <gerd@kraxel.org>" [full] # gpg: aka "Gerd Hoffmann (private) <kraxel@gmail.com>" [full] # Primary key fingerprint: A032 8CFF B93A 17A7 9901 FE7D 4CB6 D8EE D3E8 7138 * remotes/kraxel/tags/usb-20210901-pull-request: hw/usb: Fix typo in comments and print uas: add stream number sanity checks. Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
commit
4c41a1c595
@ -5,12 +5,12 @@
|
||||
/*
|
||||
* Microsoft OS Descriptors
|
||||
*
|
||||
* Windows tries to fetch some special descriptors with informations
|
||||
* Windows tries to fetch some special descriptors with information
|
||||
* specifically for windows. Presence is indicated using a special
|
||||
* string @ index 0xee. There are two kinds of descriptors:
|
||||
*
|
||||
* compatid descriptor
|
||||
* Used to bind drivers, if usb class isn't specific enougth.
|
||||
* Used to bind drivers, if usb class isn't specific enough.
|
||||
* Used for PTP/MTP for example (both share the same usb class).
|
||||
*
|
||||
* properties descriptor
|
||||
@ -23,7 +23,7 @@
|
||||
* HLM\SYSTEM\CurrentControlSet\Control\usbflags
|
||||
* HLM\SYSTEM\CurrentControlSet\Enum\USB
|
||||
* Windows will complain it can't delete entries on the second one.
|
||||
* It has deleted everything it had permissions too, which is enouth
|
||||
* It has deleted everything it had permissions too, which is enough
|
||||
* as this includes "Device Parameters".
|
||||
*
|
||||
* http://msdn.microsoft.com/en-us/library/windows/hardware/ff537430.aspx
|
||||
@ -192,8 +192,8 @@ static int usb_desc_msos_prop(const USBDesc *desc, uint8_t *dest)
|
||||
if (desc->msos->SelectiveSuspendEnabled) {
|
||||
/*
|
||||
* Signaling remote wakeup capability in the standard usb
|
||||
* descriptors isn't enouth to make windows actually use it.
|
||||
* This is the "Yes, we really mean it" registy entry to flip
|
||||
* descriptors isn't enough to make windows actually use it.
|
||||
* This is the "Yes, we really mean it" registry entry to flip
|
||||
* the switch in the windows drivers.
|
||||
*/
|
||||
length += usb_desc_msos_prop_dword(dest+length,
|
||||
|
@ -133,7 +133,7 @@ struct USBDescConfig {
|
||||
const USBDescIface *ifs;
|
||||
};
|
||||
|
||||
/* conceptually an Interface Association Descriptor, and releated interfaces */
|
||||
/* conceptually an Interface Association Descriptor, and related interfaces */
|
||||
struct USBDescIfaceAssoc {
|
||||
uint8_t bFirstInterface;
|
||||
uint8_t bInterfaceCount;
|
||||
|
@ -168,7 +168,7 @@ static const USBDescIface desc_iface[] = {
|
||||
STRING_FEATURE_UNIT, /* u8 iFeature */
|
||||
}
|
||||
},{
|
||||
/* Headphone Ouptut Terminal ID3 Descriptor */
|
||||
/* Headphone Output Terminal ID3 Descriptor */
|
||||
.data = (uint8_t[]) {
|
||||
0x09, /* u8 bLength */
|
||||
USB_DT_CS_INTERFACE, /* u8 bDescriptorType */
|
||||
@ -332,7 +332,7 @@ static const USBDescIface desc_iface_multi[] = {
|
||||
STRING_FEATURE_UNIT, /* u8 iFeature */
|
||||
}
|
||||
},{
|
||||
/* Headphone Ouptut Terminal ID3 Descriptor */
|
||||
/* Headphone Output Terminal ID3 Descriptor */
|
||||
.data = (uint8_t[]) {
|
||||
0x09, /* u8 bLength */
|
||||
USB_DT_CS_INTERFACE, /* u8 bDescriptorType */
|
||||
|
@ -840,6 +840,9 @@ static void usb_uas_handle_data(USBDevice *dev, USBPacket *p)
|
||||
}
|
||||
break;
|
||||
case UAS_PIPE_ID_STATUS:
|
||||
if (p->stream > UAS_MAX_STREAMS) {
|
||||
goto err_stream;
|
||||
}
|
||||
if (p->stream) {
|
||||
QTAILQ_FOREACH(st, &uas->results, next) {
|
||||
if (st->stream == p->stream) {
|
||||
@ -867,6 +870,9 @@ static void usb_uas_handle_data(USBDevice *dev, USBPacket *p)
|
||||
break;
|
||||
case UAS_PIPE_ID_DATA_IN:
|
||||
case UAS_PIPE_ID_DATA_OUT:
|
||||
if (p->stream > UAS_MAX_STREAMS) {
|
||||
goto err_stream;
|
||||
}
|
||||
if (p->stream) {
|
||||
req = usb_uas_find_request(uas, p->stream);
|
||||
} else {
|
||||
@ -902,6 +908,11 @@ static void usb_uas_handle_data(USBDevice *dev, USBPacket *p)
|
||||
p->status = USB_RET_STALL;
|
||||
break;
|
||||
}
|
||||
|
||||
err_stream:
|
||||
error_report("%s: invalid stream %d", __func__, p->stream);
|
||||
p->status = USB_RET_STALL;
|
||||
return;
|
||||
}
|
||||
|
||||
static void usb_uas_unrealize(USBDevice *dev)
|
||||
|
@ -1706,7 +1706,7 @@ static void usb_host_free_streams(USBDevice *udev, USBEndpoint **eps,
|
||||
/*
|
||||
* This is *NOT* about restoring state. We have absolutely no idea
|
||||
* what state the host device is in at the moment and whenever it is
|
||||
* still present in the first place. Attemping to contine where we
|
||||
* still present in the first place. Attempting to continue where we
|
||||
* left off is impossible.
|
||||
*
|
||||
* What we are going to do here is emulate a surprise removal of
|
||||
|
@ -625,9 +625,9 @@
|
||||
* Definitions for Icom Inc. devices
|
||||
*/
|
||||
#define ICOM_VID 0x0C26 /* Icom vendor ID */
|
||||
/* Note: ID-1 is a communications tranceiver for HAM-radio operators */
|
||||
/* Note: ID-1 is a communications transceiver for HAM-radio operators */
|
||||
#define ICOM_ID_1_PID 0x0004 /* ID-1 USB to RS-232 */
|
||||
/* Note: OPC is an Optional cable to connect an Icom Tranceiver */
|
||||
/* Note: OPC is an Optional cable to connect an Icom Transceiver */
|
||||
#define ICOM_OPC_U_UC_PID 0x0018 /* OPC-478UC, OPC-1122U cloning cable */
|
||||
/* Note: ID-RP* devices are Icom Repeater Devices for HAM-radio */
|
||||
#define ICOM_ID_RP2C1_PID 0x0009 /* ID-RP2C Asset 1 to RS-232 */
|
||||
|
@ -307,7 +307,7 @@ static void u2f_emulated_realize(U2FKeyState *base, Error **errp)
|
||||
rc = u2f_emulated_setup_vdev_manualy(key);
|
||||
} else {
|
||||
error_setg(errp, "%s: cert, priv, entropy and counter "
|
||||
"parameters must be provided to manualy configure "
|
||||
"parameters must be provided to manually configure "
|
||||
"the emulated device", TYPE_U2F_EMULATED);
|
||||
return;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user