USB/IP Server APP
This app uses native Android USB host APIs, so it does not require root. However, this app is not for the faint of heart because it requires some PC-side setup can be complex for inexperienced users.
With the app's USB/IP service running, you will be able to list USB devices connected to your Android device from your PC using the usbip utility. When you try to attach to them from your PC, the USB permission dialog will be displayed on your Android device. After you accept the permission dialog, the device will attach to your PC.
Per the USB/IP specification, this app listens for TCP connections on port 3240. While the service is running, it will hold a partial wakelock and Wi-Fi lock to prevent the device from sleeping or disconnecting while serving USB devices on the network.
This app is compatible with Linux's USB/IP driver in the latest kernel and the current Windows USB/IP driver. I've found that this app tends to work better with the Windows driver. Particularly, it seems mass storage and MTP are broken on Linux but work fine on Windows. USB input devices have worked equally well on both platforms in my testing.
Some USB input devices aren't exposed by Android at all, particularly external mice and keyboards I've tested. These cannot be shared.
Tested devices:
T-Flight Hotas X (flight stick) - working on Windows and Linux
Xbox 360 Wireless Receiver - working on Windows and Linux
MTP device (Android phone) - working on Windows but not Linux
Corsair Flash Voyager (flash drive) - working on Windows but not Linux
iPhone - broken on Linux and Windows
USB mouse - does not appear in device list
USB keyboard - does not appear in device list