Re: [PATCH v2] usbip: tools: Add usbip host driver availability check

From: Greg KH

Date: Wed Mar 25 2026 - 05:01:45 EST


On Wed, Mar 25, 2026 at 10:26:34AM +0800, Zongmin Zhou wrote:
> From: Zongmin Zhou <zhouzongmin@xxxxxxxxxx>
>
> Currently, usbip_generic_driver_open() doesn't verify that the required
> kernel module (usbip-host or usbip-vudc) is actually loaded.
> The function returns success even when no driver is present,
> leading to usbipd daemon run success without driver loaded.
>
> So add a check function to ensure usbip host driver has been loaded.
>
> Suggested-by: Shuah Khan <skhan@xxxxxxxxxxxxxxxxxxx>
> Signed-off-by: Zongmin Zhou <zhouzongmin@xxxxxxxxxx>
> ---
> Changes in v2:
> - Use system calls directly instead of checking sysfs dir.
>
> tools/usb/usbip/libsrc/usbip_device_driver.c | 7 +++++--
> tools/usb/usbip/libsrc/usbip_host_driver.c | 8 ++++++--
> 2 files changed, 11 insertions(+), 4 deletions(-)
>
> diff --git a/tools/usb/usbip/libsrc/usbip_device_driver.c b/tools/usb/usbip/libsrc/usbip_device_driver.c
> index 927a151fa9aa..45ab647ef241 100644
> --- a/tools/usb/usbip/libsrc/usbip_device_driver.c
> +++ b/tools/usb/usbip/libsrc/usbip_device_driver.c
> @@ -136,10 +136,13 @@ static int usbip_device_driver_open(struct usbip_host_driver *hdriver)
> hdriver->ndevs = 0;
> INIT_LIST_HEAD(&hdriver->edev_list);
>
> - ret = usbip_generic_driver_open(hdriver);
> - if (ret)
> + if (system("/sbin/lsmod | grep -q usbip_vudc")){

What happens if the module is built into the kernel?

> err("please load " USBIP_CORE_MOD_NAME ".ko and "
> USBIP_DEVICE_DRV_NAME ".ko!");
> + return -1;
> + }
> +
> + ret = usbip_generic_driver_open(hdriver);
>
> return ret;
> }
> diff --git a/tools/usb/usbip/libsrc/usbip_host_driver.c b/tools/usb/usbip/libsrc/usbip_host_driver.c
> index 573e73ec36bd..f0ac941d4f6e 100644
> --- a/tools/usb/usbip/libsrc/usbip_host_driver.c
> +++ b/tools/usb/usbip/libsrc/usbip_host_driver.c
> @@ -31,10 +31,14 @@ static int usbip_host_driver_open(struct usbip_host_driver *hdriver)
> hdriver->ndevs = 0;
> INIT_LIST_HEAD(&hdriver->edev_list);
>
> - ret = usbip_generic_driver_open(hdriver);
> - if (ret)
> + if (system("/sbin/lsmod | grep -q usbip_host")){

Same here, what happens if it is built in?

thanks,

greg k-h