deraadt@ pointed out that the operation is correct.
It attaches, but by then it is being pulled. The dying flag is set to
avoid half the kinds of failure conditions. The other half of the failure
conditions are detect on-the-spot.
And it seems when compiled for debug, this on-the-spot check which notices
the device isn't there, has a printf.
-/* $OpenBSD: if_ure.c,v 1.27 2021/08/20 01:40:51 kevlo Exp $ */
+/* $OpenBSD: if_ure.c,v 1.28 2021/08/20 04:54:10 kevlo Exp $ */
/*-
* Copyright (c) 2015, 2016, 2019 Kevin Lo <kevlo@openbsd.org>
* Copyright (c) 2020 Jonathon Fletcher <jonathon.fletcher@gmail.com>
usbd_status err;
if (usbd_is_dying(sc->ure_udev))
- return -1;
+ return 0;
if (rw == URE_CTL_WRITE)
req.bmRequestType = UT_WRITE_VENDOR_DEVICE;
err = usbd_do_request(sc->ure_udev, &req, buf);
if (err) {
DPRINTF(("ure_ctl: error %d\n", err));
- if (err == USBD_CANCELLED || err == USBD_TIMEOUT)
- usbd_deactivate(sc->ure_udev);
return -1;
}