aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLiam Merwick <liam.merwick@oracle.com>2019-02-06 13:36:54 +0000
committerGerd Hoffmann <kraxel@redhat.com>2019-02-20 09:41:23 +0100
commite87fd1e6e547a80b3e403e882b829d2750e24e44 (patch)
tree6af1f6c8720f4ad3888bf2548f3f5a43c6958971
parentff668537b6ec172b797091d11a228a97c4bfca8e (diff)
downloadqemu-arm-e87fd1e6e547a80b3e403e882b829d2750e24e44.tar.gz
usb: check device is not NULL before calling usb_ep_get()
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> Message-id: 1549460216-25808-8-git-send-email-liam.merwick@oracle.com Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
-rw-r--r--hw/usb/hcd-musb.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/hw/usb/hcd-musb.c b/hw/usb/hcd-musb.c
index d70a91a58c..85d7796554 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;