DF-5383 / fix.diff
--- a/sys/bus/u4b/serial/umcs.h +++ b/sys/bus/u4b/serial/umcs.h @@ -30,7 +30,14 @@ #define UMCS7840_MAX_PORTS 4 #define UMCS7840_READ_LENGTH 1 /* bytes */ -#define UMCS7840_CTRL_TIMEOUT 500 /* ms */ +/* + * DF-5383: 500 ms per control request allowed an evil device to stretch + * umcs7840_cfg_open()'s 28-request chain (and cfg_close's 4) to ~14 s of + * uninterruptible usb_proc_mwait()/usb_proc_drain() stall. 100 ms bounds + * the whole open/close sequence to ~3 s while remaining two orders of + * magnitude above a healthy device's control-transfer latency. + */ +#define UMCS7840_CTRL_TIMEOUT 100 /* ms */ /* Read/Wrtire registers vendor commands */ #define MCS7840_RDREQ 0x0d |