linux_usbfs: Wait until all URBs have been reaped before freeing them
authorChris Dickens <christopher.a.dickens@gmail.com>
Thu, 16 Jan 2020 22:17:12 +0000 (14:17 -0800)
committerChris Dickens <christopher.a.dickens@gmail.com>
Thu, 16 Jan 2020 22:30:12 +0000 (14:30 -0800)
commit9eda802d947d9c4212eb3f821fa51956029dade0
treeb9bf7b8f22dc379c5e02a8043ee611143d19a584
parenta5624b22267ec0e146825d3fe94d9e4b2f5ae503
linux_usbfs: Wait until all URBs have been reaped before freeing them

Prior to this change, the URBs allocated for an individual transfer were
freed when the last URB in the transfer was reaped. Normally this causes
no issues because URBs are reaped in the order they were submitted. If
the device is disconnected while multiple URBs are queued, these URBs
may be reaped in an order that does not match that of submission.

Change the logic to free the URBs when all the URBs of a transfer have
been reaped rather than the last one. While in here, improve some debug
messages.

Closes #607

Signed-off-by: Chris Dickens <christopher.a.dickens@gmail.com>
libusb/os/linux_usbfs.c
libusb/version_nano.h