summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormpi <mpi@openbsd.org>2013-04-26 14:43:22 +0000
committermpi <mpi@openbsd.org>2013-04-26 14:43:22 +0000
commit47c02b80fbf1806cc516fd21aacac40e2b1346ce (patch)
tree8bb0608621a71667f49f7c804fb744d246876b88
parentDon't use usbd_bulk_transfer() to submit a synchronous transfer. This (diff)
downloadwireguard-openbsd-47c02b80fbf1806cc516fd21aacac40e2b1346ce.tar.xz
wireguard-openbsd-47c02b80fbf1806cc516fd21aacac40e2b1346ce.zip
Don't use usbd_bulk_transfer() to submit a synchronous transfer. This
function is badly named and checks for posted signals before and after sleeping only if there's no timeout set, which is not the case here. Tested by and ok mglocker@
-rw-r--r--sys/dev/usb/if_upgt.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/sys/dev/usb/if_upgt.c b/sys/dev/usb/if_upgt.c
index d2f81200f0f..dbd7f70b471 100644
--- a/sys/dev/usb/if_upgt.c
+++ b/sys/dev/usb/if_upgt.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: if_upgt.c,v 1.57 2013/04/15 09:23:01 mglocker Exp $ */
+/* $OpenBSD: if_upgt.c,v 1.58 2013/04/26 14:43:22 mpi Exp $ */
/*
* Copyright (c) 2007 Marcus Glocker <mglocker@openbsd.org>
@@ -2320,9 +2320,9 @@ upgt_bulk_xmit(struct upgt_softc *sc, struct upgt_data *data,
{
usbd_status status;
- status = usbd_bulk_transfer(data->xfer, pipeh,
- USBD_NO_COPY | flags, UPGT_USB_TIMEOUT, data->buf, size,
- "upgt_bulk_xmit");
+ usbd_setup_xfer(data->xfer, pipeh, 0, data->buf, *size,
+ USBD_NO_COPY | USBD_SYNCHRONOUS | flags, UPGT_USB_TIMEOUT, NULL);
+ status = usbd_transfer(data->xfer);
if (status != USBD_NORMAL_COMPLETION) {
printf("%s: %s: error %s!\n",
sc->sc_dev.dv_xname, __func__, usbd_errstr(status));