* [Qemu-devel] [PATCH v2 0/9] Dealing with Null devices in usb_ep_get()
@ 2019-02-06 13:36 Liam Merwick
2019-02-06 13:36 ` [Qemu-devel] [PATCH v2 1/9] usb: rearrange usb_ep_get() Liam Merwick
` (9 more replies)
0 siblings, 10 replies; 11+ messages in thread
From: Liam Merwick @ 2019-02-06 13:36 UTC (permalink / raw)
To: kraxel, qemu-devel; +Cc: liam.merwick, darren.kenny
This series is in response to feedback from Gerd Hoffman (below) on
<1548859022-3969-1-git-send-email-liam.merwick@oracle.com>
Instead of checking if usb_ep_get() returns NULL, ensure it never is passed
a NULL device.
===
The usb device emulation (hw/usb/dev-*.c) never ever calls usb_ep_get()
with dev == NULL. There are some places in usb host adapter emulation
(hw/usb/hcd-*) which might do this. uhci for example has this ...
[ ... ]
USBDevice *dev = uhci_find_device(s, (td->token >> 8) & 0x7f);
USBEndpoint *ep = usb_ep_get(dev, pid, (td->token >> 15) & 0xf);
if (ep == NULL) {
[ ... ]
... and uhci_find_device can return NULL.
So, I'd suggest to check all usb_ep_get() callers, fix them if needed,
then remove the 'if (dev== NULL)' check in usb_ep_get() and add the
assert() instead.
===
Passes QEMU 'make check' and kvm-unit-tests
Liam Merwick (9):
usb: rearrange usb_ep_get()
xhci: add asserts to help with static code analysis
xhci: check device is not NULL before calling usb_ep_get()
ehci: check device is not NULL before calling usb_ep_get()
ohci: check device is not NULL before calling usb_ep_get()
uhci: check device is not NULL before calling usb_ep_get()
usb: check device is not NULL before calling usb_ep_get()
usb: add device checks before redirector calls to usb_ep_get()
usb: remove unnecessary NULL device check from usb_ep_get()
hw/usb/core.c | 6 ++----
hw/usb/hcd-ehci.c | 7 +++++--
hw/usb/hcd-musb.c | 8 ++++----
hw/usb/hcd-ohci.c | 8 ++++++++
hw/usb/hcd-uhci.c | 8 +++++---
hw/usb/hcd-xhci.c | 6 ++++--
hw/usb/redirect.c | 3 ++-
7 files changed, 30 insertions(+), 16 deletions(-)
--
1.8.3.1
^ permalink raw reply [flat|nested] 11+ messages in thread
* [Qemu-devel] [PATCH v2 1/9] usb: rearrange usb_ep_get()
2019-02-06 13:36 [Qemu-devel] [PATCH v2 0/9] Dealing with Null devices in usb_ep_get() Liam Merwick
@ 2019-02-06 13:36 ` Liam Merwick
2019-02-06 13:36 ` [Qemu-devel] [PATCH v2 2/9] xhci: add asserts to help with static code analysis Liam Merwick
` (8 subsequent siblings)
9 siblings, 0 replies; 11+ messages in thread
From: Liam Merwick @ 2019-02-06 13:36 UTC (permalink / raw)
To: kraxel, qemu-devel; +Cc: liam.merwick, darren.kenny
There is no need to calculate the 'eps' variable in usb_ep_get()
if 'ep' is the control endpoint. Instead the calculation should
be done after validating the input before returning an entry
indexed by the endpoint 'ep'.
Signed-off-by: Liam Merwick <liam.merwick@oracle.com>
Reviewed-by: Darren Kenny <Darren.Kenny@oracle.com>
Reviewed-by: Mark Kanda <Mark.Kanda@oracle.com>
Reviewed-by: Ameya More <ameya.more@oracle.com>
---
hw/usb/core.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/hw/usb/core.c b/hw/usb/core.c
index 241ae66b1505..bfb7ae67bbf0 100644
--- a/hw/usb/core.c
+++ b/hw/usb/core.c
@@ -720,12 +720,12 @@ struct USBEndpoint *usb_ep_get(USBDevice *dev, int pid, int ep)
if (dev == NULL) {
return NULL;
}
- eps = (pid == USB_TOKEN_IN) ? dev->ep_in : dev->ep_out;
if (ep == 0) {
return &dev->ep_ctl;
}
assert(pid == USB_TOKEN_IN || pid == USB_TOKEN_OUT);
assert(ep > 0 && ep <= USB_MAX_ENDPOINTS);
+ eps = (pid == USB_TOKEN_IN) ? dev->ep_in : dev->ep_out;
return eps + ep - 1;
}
--
1.8.3.1
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [Qemu-devel] [PATCH v2 2/9] xhci: add asserts to help with static code analysis
2019-02-06 13:36 [Qemu-devel] [PATCH v2 0/9] Dealing with Null devices in usb_ep_get() Liam Merwick
2019-02-06 13:36 ` [Qemu-devel] [PATCH v2 1/9] usb: rearrange usb_ep_get() Liam Merwick
@ 2019-02-06 13:36 ` Liam Merwick
2019-02-06 13:36 ` [Qemu-devel] [PATCH v2 3/9] xhci: check device is not NULL before calling usb_ep_get() Liam Merwick
` (7 subsequent siblings)
9 siblings, 0 replies; 11+ messages in thread
From: Liam Merwick @ 2019-02-06 13:36 UTC (permalink / raw)
To: kraxel, qemu-devel; +Cc: liam.merwick, darren.kenny
Most callers of xhci_port_update() and xhci_wakeup() pass in a pointer
to an array entry and can never be NULL but add two defensive asserts
to protect against future changes (e.g. adding a new port speed, etc.)
adding a path through xhci_lookup_port() that could result in the
return of a NULL XHCIPort.
Signed-off-by: Liam Merwick <liam.merwick@oracle.com>
---
hw/usb/hcd-xhci.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/hw/usb/hcd-xhci.c b/hw/usb/hcd-xhci.c
index 19c64f7ff421..99b83aaa9ed5 100644
--- a/hw/usb/hcd-xhci.c
+++ b/hw/usb/hcd-xhci.c
@@ -2607,6 +2607,7 @@ static void xhci_port_update(XHCIPort *port, int is_detach)
{
uint32_t pls = PLS_RX_DETECT;
+ assert(port);
port->portsc = PORTSC_PP;
if (!is_detach && xhci_port_have_device(port)) {
port->portsc |= PORTSC_CCS;
@@ -3215,6 +3216,7 @@ static void xhci_wakeup(USBPort *usbport)
XHCIState *xhci = usbport->opaque;
XHCIPort *port = xhci_lookup_port(xhci, usbport);
+ assert(port);
if (get_field(port->portsc, PORTSC_PLS) != PLS_U3) {
return;
}
--
1.8.3.1
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [Qemu-devel] [PATCH v2 3/9] xhci: check device is not NULL before calling usb_ep_get()
2019-02-06 13:36 [Qemu-devel] [PATCH v2 0/9] Dealing with Null devices in usb_ep_get() Liam Merwick
2019-02-06 13:36 ` [Qemu-devel] [PATCH v2 1/9] usb: rearrange usb_ep_get() Liam Merwick
2019-02-06 13:36 ` [Qemu-devel] [PATCH v2 2/9] xhci: add asserts to help with static code analysis Liam Merwick
@ 2019-02-06 13:36 ` Liam Merwick
2019-02-06 13:36 ` [Qemu-devel] [PATCH v2 4/9] ehci: " Liam Merwick
` (6 subsequent siblings)
9 siblings, 0 replies; 11+ messages in thread
From: Liam Merwick @ 2019-02-06 13:36 UTC (permalink / raw)
To: kraxel, qemu-devel; +Cc: liam.merwick, darren.kenny
Signed-off-by: Liam Merwick <liam.merwick@oracle.com>
---
hw/usb/hcd-xhci.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/hw/usb/hcd-xhci.c b/hw/usb/hcd-xhci.c
index 99b83aaa9ed5..ec28bee31963 100644
--- a/hw/usb/hcd-xhci.c
+++ b/hw/usb/hcd-xhci.c
@@ -3276,10 +3276,10 @@ static USBEndpoint *xhci_epid_to_usbep(XHCIEPContext *epctx)
return NULL;
}
uport = epctx->xhci->slots[epctx->slotid - 1].uport;
- token = (epctx->epid & 1) ? USB_TOKEN_IN : USB_TOKEN_OUT;
- if (!uport) {
+ if (!uport || !uport->dev) {
return NULL;
}
+ token = (epctx->epid & 1) ? USB_TOKEN_IN : USB_TOKEN_OUT;
return usb_ep_get(uport->dev, token, epctx->epid >> 1);
}
--
1.8.3.1
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [Qemu-devel] [PATCH v2 4/9] ehci: check device is not NULL before calling usb_ep_get()
2019-02-06 13:36 [Qemu-devel] [PATCH v2 0/9] Dealing with Null devices in usb_ep_get() Liam Merwick
` (2 preceding siblings ...)
2019-02-06 13:36 ` [Qemu-devel] [PATCH v2 3/9] xhci: check device is not NULL before calling usb_ep_get() Liam Merwick
@ 2019-02-06 13:36 ` Liam Merwick
2019-02-06 13:36 ` [Qemu-devel] [PATCH v2 5/9] ohci: " Liam Merwick
` (5 subsequent siblings)
9 siblings, 0 replies; 11+ messages in thread
From: Liam Merwick @ 2019-02-06 13:36 UTC (permalink / raw)
To: kraxel, qemu-devel; +Cc: liam.merwick, darren.kenny
In ehci_process_itd(), the call to ehci_find_device() can return NULL
if it doesn't find a device matching 'devaddr' so explicitly check
the return value before passing it to usb_ep_get().
Signed-off-by: Liam Merwick <liam.merwick@oracle.com>
---
hw/usb/hcd-ehci.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/hw/usb/hcd-ehci.c b/hw/usb/hcd-ehci.c
index 9b132cb0d392..62dab0592fa2 100644
--- a/hw/usb/hcd-ehci.c
+++ b/hw/usb/hcd-ehci.c
@@ -1439,9 +1439,12 @@ static int ehci_process_itd(EHCIState *ehci,
qemu_sglist_add(&ehci->isgl, ptr1 + off, len);
}
- pid = dir ? USB_TOKEN_IN : USB_TOKEN_OUT;
-
dev = ehci_find_device(ehci, devaddr);
+ if (dev == NULL) {
+ ehci_trace_guest_bug(ehci, "no device found");
+ return -1;
+ }
+ pid = dir ? USB_TOKEN_IN : USB_TOKEN_OUT;
ep = usb_ep_get(dev, pid, endp);
if (ep && ep->type == USB_ENDPOINT_XFER_ISOC) {
usb_packet_setup(&ehci->ipacket, pid, ep, 0, addr, false,
--
1.8.3.1
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [Qemu-devel] [PATCH v2 5/9] ohci: check device is not NULL before calling usb_ep_get()
2019-02-06 13:36 [Qemu-devel] [PATCH v2 0/9] Dealing with Null devices in usb_ep_get() Liam Merwick
` (3 preceding siblings ...)
2019-02-06 13:36 ` [Qemu-devel] [PATCH v2 4/9] ehci: " Liam Merwick
@ 2019-02-06 13:36 ` Liam Merwick
2019-02-06 13:36 ` [Qemu-devel] [PATCH v2 6/9] uhci: " Liam Merwick
` (4 subsequent siblings)
9 siblings, 0 replies; 11+ messages in thread
From: Liam Merwick @ 2019-02-06 13:36 UTC (permalink / raw)
To: kraxel, qemu-devel; +Cc: liam.merwick, darren.kenny
A call to ohci_find_device() can return NULL if it doesn't find a
device matching 'addr' so for the two callers, explicitly check
the return value before passing it to usb_ep_get().
Signed-off-by: Liam Merwick <liam.merwick@oracle.com>
---
hw/usb/hcd-ohci.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/hw/usb/hcd-ohci.c b/hw/usb/hcd-ohci.c
index c34cf5b73a3a..196a9f72002d 100644
--- a/hw/usb/hcd-ohci.c
+++ b/hw/usb/hcd-ohci.c
@@ -848,6 +848,10 @@ static int ohci_service_iso_td(OHCIState *ohci, struct ohci_ed *ed,
bool int_req = relative_frame_number == frame_count &&
OHCI_BM(iso_td.flags, TD_DI) == 0;
dev = ohci_find_device(ohci, OHCI_BM(ed->flags, ED_FA));
+ if (dev == NULL) {
+ trace_usb_ohci_td_dev_error();
+ return 1;
+ }
ep = usb_ep_get(dev, pid, OHCI_BM(ed->flags, ED_EN));
usb_packet_setup(&ohci->usb_packet, pid, ep, 0, addr, false, int_req);
usb_packet_addbuf(&ohci->usb_packet, ohci->usb_buf, len);
@@ -1071,6 +1075,10 @@ static int ohci_service_td(OHCIState *ohci, struct ohci_ed *ed)
return 1;
}
dev = ohci_find_device(ohci, OHCI_BM(ed->flags, ED_FA));
+ if (dev == NULL) {
+ trace_usb_ohci_td_dev_error();
+ return 1;
+ }
ep = usb_ep_get(dev, pid, OHCI_BM(ed->flags, ED_EN));
usb_packet_setup(&ohci->usb_packet, pid, ep, 0, addr, !flag_r,
OHCI_BM(td.flags, TD_DI) == 0);
--
1.8.3.1
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [Qemu-devel] [PATCH v2 6/9] uhci: check device is not NULL before calling usb_ep_get()
2019-02-06 13:36 [Qemu-devel] [PATCH v2 0/9] Dealing with Null devices in usb_ep_get() Liam Merwick
` (4 preceding siblings ...)
2019-02-06 13:36 ` [Qemu-devel] [PATCH v2 5/9] ohci: " Liam Merwick
@ 2019-02-06 13:36 ` Liam Merwick
2019-02-06 13:36 ` [Qemu-devel] [PATCH v2 7/9] usb: " Liam Merwick
` (3 subsequent siblings)
9 siblings, 0 replies; 11+ messages in thread
From: Liam Merwick @ 2019-02-06 13:36 UTC (permalink / raw)
To: kraxel, qemu-devel; +Cc: liam.merwick, darren.kenny
In uhci_handle_td(), the call to ehci_find_device() can return NULL
if it doesn't find a device matching 'addr' so explicitly check
the return value before passing it to usb_ep_get().
Signed-off-by: Liam Merwick <liam.merwick@oracle.com>
---
hw/usb/hcd-uhci.c | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/hw/usb/hcd-uhci.c b/hw/usb/hcd-uhci.c
index e694b62086d3..09df29ff9c16 100644
--- a/hw/usb/hcd-uhci.c
+++ b/hw/usb/hcd-uhci.c
@@ -858,13 +858,15 @@ static int uhci_handle_td(UHCIState *s, UHCIQueue *q, uint32_t qh_addr,
/* Allocate new packet */
if (q == NULL) {
- USBDevice *dev = uhci_find_device(s, (td->token >> 8) & 0x7f);
- USBEndpoint *ep = usb_ep_get(dev, pid, (td->token >> 15) & 0xf);
+ USBDevice *dev;
+ USBEndpoint *ep;
- if (ep == NULL) {
+ dev = uhci_find_device(s, (td->token >> 8) & 0x7f);
+ if (dev == NULL) {
return uhci_handle_td_error(s, td, td_addr, USB_RET_NODEV,
int_mask);
}
+ ep = usb_ep_get(dev, pid, (td->token >> 15) & 0xf);
q = uhci_queue_new(s, qh_addr, td, ep);
}
async = uhci_async_alloc(q, td_addr);
--
1.8.3.1
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [Qemu-devel] [PATCH v2 7/9] usb: check device is not NULL before calling usb_ep_get()
2019-02-06 13:36 [Qemu-devel] [PATCH v2 0/9] Dealing with Null devices in usb_ep_get() Liam Merwick
` (5 preceding siblings ...)
2019-02-06 13:36 ` [Qemu-devel] [PATCH v2 6/9] uhci: " Liam Merwick
@ 2019-02-06 13:36 ` Liam Merwick
2019-02-06 13:36 ` [Qemu-devel] [PATCH v2 8/9] usb: add device checks before redirector calls to usb_ep_get() Liam Merwick
` (2 subsequent siblings)
9 siblings, 0 replies; 11+ messages in thread
From: Liam Merwick @ 2019-02-06 13:36 UTC (permalink / raw)
To: kraxel, qemu-devel; +Cc: liam.merwick, darren.kenny
In musb_packet(), the call to usb_find_device() can return NULL
if it doesn't find a device matching 'addr' so explicitly check
the return value before passing it to usb_ep_get(). This then
allows the subsequent calculation of 'id' to be streamlined.
Signed-off-by: Liam Merwick <liam.merwick@oracle.com>
---
hw/usb/hcd-musb.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/hw/usb/hcd-musb.c b/hw/usb/hcd-musb.c
index d70a91a58ce2..85d779655498 100644
--- a/hw/usb/hcd-musb.c
+++ b/hw/usb/hcd-musb.c
@@ -628,11 +628,11 @@ static void musb_packet(MUSBState *s, MUSBEndPoint *ep,
/* A wild guess on the FADDR semantics... */
dev = usb_find_device(&s->port, ep->faddr[idx]);
- uep = usb_ep_get(dev, pid, ep->type[idx] & 0xf);
- id = pid;
- if (uep) {
- id |= (dev->addr << 16) | (uep->nr << 8);
+ if (dev == NULL) {
+ return;
}
+ uep = usb_ep_get(dev, pid, ep->type[idx] & 0xf);
+ id = pid | (dev->addr << 16) | (uep->nr << 8);
usb_packet_setup(&ep->packey[dir].p, pid, uep, 0, id, false, true);
usb_packet_addbuf(&ep->packey[dir].p, ep->buf[idx], len);
ep->packey[dir].ep = ep;
--
1.8.3.1
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [Qemu-devel] [PATCH v2 8/9] usb: add device checks before redirector calls to usb_ep_get()
2019-02-06 13:36 [Qemu-devel] [PATCH v2 0/9] Dealing with Null devices in usb_ep_get() Liam Merwick
` (6 preceding siblings ...)
2019-02-06 13:36 ` [Qemu-devel] [PATCH v2 7/9] usb: " Liam Merwick
@ 2019-02-06 13:36 ` Liam Merwick
2019-02-06 13:36 ` [Qemu-devel] [PATCH v2 9/9] usb: remove unnecessary NULL device check from usb_ep_get() Liam Merwick
2019-02-08 10:18 ` [Qemu-devel] [PATCH v2 0/9] Dealing with Null devices in usb_ep_get() Gerd Hoffmann
9 siblings, 0 replies; 11+ messages in thread
From: Liam Merwick @ 2019-02-06 13:36 UTC (permalink / raw)
To: kraxel, qemu-devel; +Cc: liam.merwick, darren.kenny
Add an assert and an explicit check before the two callers to
usb_ep_get() in the USB redirector code to ensure the device
passed in is not NULL.
Signed-off-by: Liam Merwick <liam.merwick@oracle.com>
---
hw/usb/redirect.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/hw/usb/redirect.c b/hw/usb/redirect.c
index 18a42d19380e..7cb6b120d4f0 100644
--- a/hw/usb/redirect.c
+++ b/hw/usb/redirect.c
@@ -1728,6 +1728,7 @@ static void usbredir_ep_info(void *priv,
USBRedirDevice *dev = priv;
int i;
+ assert(dev != NULL);
for (i = 0; i < MAX_ENDPOINTS; i++) {
dev->endpoint[i].type = ep_info->type[i];
dev->endpoint[i].interval = ep_info->interval[i];
@@ -2125,7 +2126,7 @@ static int usbredir_post_load(void *priv, int version_id)
{
USBRedirDevice *dev = priv;
- if (dev->parser == NULL) {
+ if (dev == NULL || dev->parser == NULL) {
return 0;
}
--
1.8.3.1
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [Qemu-devel] [PATCH v2 9/9] usb: remove unnecessary NULL device check from usb_ep_get()
2019-02-06 13:36 [Qemu-devel] [PATCH v2 0/9] Dealing with Null devices in usb_ep_get() Liam Merwick
` (7 preceding siblings ...)
2019-02-06 13:36 ` [Qemu-devel] [PATCH v2 8/9] usb: add device checks before redirector calls to usb_ep_get() Liam Merwick
@ 2019-02-06 13:36 ` Liam Merwick
2019-02-08 10:18 ` [Qemu-devel] [PATCH v2 0/9] Dealing with Null devices in usb_ep_get() Gerd Hoffmann
9 siblings, 0 replies; 11+ messages in thread
From: Liam Merwick @ 2019-02-06 13:36 UTC (permalink / raw)
To: kraxel, qemu-devel; +Cc: liam.merwick, darren.kenny
No caller of usb_ep_get() calls it with a NULL device (previous commits
have addressed the few remaining cases which didn't explicitly check).
Replace check for 'dev == NULL' with an assert instead.
Signed-off-by: Liam Merwick <liam.merwick@oracle.com>
---
hw/usb/core.c | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/hw/usb/core.c b/hw/usb/core.c
index bfb7ae67bbf0..8fbd9c7d573b 100644
--- a/hw/usb/core.c
+++ b/hw/usb/core.c
@@ -717,9 +717,7 @@ struct USBEndpoint *usb_ep_get(USBDevice *dev, int pid, int ep)
{
struct USBEndpoint *eps;
- if (dev == NULL) {
- return NULL;
- }
+ assert(dev != NULL);
if (ep == 0) {
return &dev->ep_ctl;
}
--
1.8.3.1
^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [Qemu-devel] [PATCH v2 0/9] Dealing with Null devices in usb_ep_get()
2019-02-06 13:36 [Qemu-devel] [PATCH v2 0/9] Dealing with Null devices in usb_ep_get() Liam Merwick
` (8 preceding siblings ...)
2019-02-06 13:36 ` [Qemu-devel] [PATCH v2 9/9] usb: remove unnecessary NULL device check from usb_ep_get() Liam Merwick
@ 2019-02-08 10:18 ` Gerd Hoffmann
9 siblings, 0 replies; 11+ messages in thread
From: Gerd Hoffmann @ 2019-02-08 10:18 UTC (permalink / raw)
To: Liam Merwick; +Cc: qemu-devel, darren.kenny
On Wed, Feb 06, 2019 at 01:36:47PM +0000, Liam Merwick wrote:
> This series is in response to feedback from Gerd Hoffman (below) on
> <1548859022-3969-1-git-send-email-liam.merwick@oracle.com>
>
> Instead of checking if usb_ep_get() returns NULL, ensure it never is passed
> a NULL device.
Added all to usb queue.
thanks,
Gerd
^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2019-02-08 10:18 UTC | newest]
Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-02-06 13:36 [Qemu-devel] [PATCH v2 0/9] Dealing with Null devices in usb_ep_get() Liam Merwick
2019-02-06 13:36 ` [Qemu-devel] [PATCH v2 1/9] usb: rearrange usb_ep_get() Liam Merwick
2019-02-06 13:36 ` [Qemu-devel] [PATCH v2 2/9] xhci: add asserts to help with static code analysis Liam Merwick
2019-02-06 13:36 ` [Qemu-devel] [PATCH v2 3/9] xhci: check device is not NULL before calling usb_ep_get() Liam Merwick
2019-02-06 13:36 ` [Qemu-devel] [PATCH v2 4/9] ehci: " Liam Merwick
2019-02-06 13:36 ` [Qemu-devel] [PATCH v2 5/9] ohci: " Liam Merwick
2019-02-06 13:36 ` [Qemu-devel] [PATCH v2 6/9] uhci: " Liam Merwick
2019-02-06 13:36 ` [Qemu-devel] [PATCH v2 7/9] usb: " Liam Merwick
2019-02-06 13:36 ` [Qemu-devel] [PATCH v2 8/9] usb: add device checks before redirector calls to usb_ep_get() Liam Merwick
2019-02-06 13:36 ` [Qemu-devel] [PATCH v2 9/9] usb: remove unnecessary NULL device check from usb_ep_get() Liam Merwick
2019-02-08 10:18 ` [Qemu-devel] [PATCH v2 0/9] Dealing with Null devices in usb_ep_get() Gerd Hoffmann
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.