From nobody Tue Sep 29 07:48:34 2026 Received: from mail-yx1-f49.google.com (mail-yx1-f49.google.com [74.125.224.49]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 09F233876C4 for ; Tue, 11 Aug 2026 03:42:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=pass smtp.client-ip=74.125.224.49 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786419727; cv=pass; b=WV8dfPQ2FZpPE6ZcPHeE6Umu5dk/T7HbAkzNy7xDoIv5xrDx5JSYdq8ebWgpmv8E792aEDcUTBgG0D0Eke+xoS+Eyd1mTOpc2wb+2Tx4gwJJAsiLdsbk41xlWJuw1e2vxS0hXGg1+Fj9u+lpp0jJqAAONYVUfNseZ1PxeEUWeug= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786419727; c=relaxed/simple; bh=iZB2YHuqY/AHAU9asRRVXZpiAJUeAYjNTurWRgZq72A=; h=MIME-Version:From:Date:Message-ID:Subject:To:Cc:Content-Type; b=EbyMRbBaxfEw7cwi/+Uud+iqF77a53EC0ugwVSfN7+rY/M+oF2oWTTw7ugruAvdBT97MPDvBJBh8O+ZcBTO8A3LtBkAB8gMpYLITqSEcxWFtgM4iONXnJT6i9tW89tlQlETiY97Wxs1Equ+0+cePH+Yse8rJCvX9/H/DjHxsFuU= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=M56JBqCl; arc=pass smtp.client-ip=74.125.224.49 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="M56JBqCl" Received: by mail-yx1-f49.google.com with SMTP id 956f58d0204a3-664b05d408bso2207096d50.1 for ; Mon, 10 Aug 2026 20:42:04 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1786419724; cv=none; d=google.com; s=arc-20260327; b=SFgWFEs1lhoB047HfGAaNIZR+mFbaDKxVmvoxlkcSnkMXBmb7fBc/kcV1+zKt+qDU1 03rka30rbUeZDAwG3MxB4MfJuOOcOs+mbIX62gYueK0jnEWXFc+1ogi4Hbs3d7qK51Bo r1xoPeqIwm51PYDj+lNygeQ5kQy6N6REcUYIyMR8GKqsQFJWps0NjjmUw3tV8gf0b2k1 KYf2nzO++QOaWXDTs8hNZWxxRx7u6cUQ3owG4oTUK7OPia8iE6QIyatgY4kI552yVZFx 5iEXW9+PncV1f0y/NUrttZK2LAMGAO2hyrsbmEfARQX6S+dNcQUaCcLhZNpDO7sz00Nk 911w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20260327; h=cc:to:subject:message-id:date:from:mime-version:dkim-signature; bh=ZnL4Vz4XyDBv6/wX4o2LTm4p1gW6ZuiqBp9YAgRdnNQ=; fh=FgBbS1fIXfk+xUdE2mVGj/OH4iFv++KyXCTKqZ7fsqg=; b=NT3vrlTA5rQhZGxKutKrU1zNjiS4XYYnQ3/Bj5e+GMyxv0mKvDk5HM39iorAaSSYX7 SdXvm9QOSaFn73KOnp2OwYF+Ltmh3/Ixis2P6VwHZfCOX2Anpj6sBLxq+7hK5S9zGQni eFBtgLyOTUKwUWCxA6jQbCGB5BEGEEOuTYxKUY4YR8QeL6/yF8VNrSDHmvY9ByRmz/UH fWpeRS0VB25BVBeS4LMhawgfQUiO8NDdqEl34C4mcoNAPH1kOSk8qGndjp1bPwgRuQEQ 9b0Y2BZEWXqum5Dem85zxyEFBnW6PuHMlV4mK+s30E3sMrFljTTLjeqIL1m4qr8HkCN+ 7EJg==; darn=vger.kernel.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1786419724; x=1787024524; darn=vger.kernel.org; h=content-type:cc:to:subject:message-id:date:from:mime-version:from :to:cc:subject:date:message-id:reply-to:content-type; bh=ZnL4Vz4XyDBv6/wX4o2LTm4p1gW6ZuiqBp9YAgRdnNQ=; b=M56JBqClpfVX3GWOT3FFC04i5IsT3GsTeyvnJpyEKRdXfyWLfuv/bbk6drpa9Syjbb ce5IlvO0yG6VLl4ZW/xvPIgrjkhhXmhzYKR6FGits4UhRsmUqp9J5d4pO07VNjNAyDRc feZZk5+p3wCKysocUrNJ/u8hfhEinler742J7H2bIEFQJAeOFqzmLOfHFDRXL12MHJJU VtjDkKlbDy7uF+B9r+MicQynM7QO0e32g0M73ttxLywukiIbfTl7/a7HWm47Irsto1gZ gK9BkQm1WEyb6+/hbgPE84qQanhVIlspbBERt4gn4AloKB3BwPyH65nCGl/9OKhx2m+3 D5Sg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786419724; x=1787024524; h=content-type:cc:to:subject:message-id:date:from:mime-version :x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to:content-type; bh=ZnL4Vz4XyDBv6/wX4o2LTm4p1gW6ZuiqBp9YAgRdnNQ=; b=lk1hZcLUPYtdaFC6TdlwYy3TFxzjoULYlmx0dDA9jNGkNgr1omPHqf1OAkOsAI1OLb L2sM+aWPWnP9slGeMixmiUdjuIRd7re/OJO7MDxe7l8n5bFY5yVoqVMW8DUchRLWPCOO pTY4SAsIT4tw9wNKFeIwlPxg2fF3qAL0i16/K75YuA/YwV17W0WnkBeucel6/f5bGiV5 qEJJv7aUJGPIbb/swfXMRhvAsMRlQozqMotxiQ/+PIz5v4WAPmI6b2zFmnRxHMMdM8XV fT3XuuyDaGF4Lm0gs4d059wmJJPN3OSiGn5MPVPlxHj1a0DjMdynb0FMYZfs39shijnv Bvvw== X-Forwarded-Encrypted: i=1; AHgh+RqGMJyRQkVroRuG/cjIbh86Zw0ZxWECbyflsUQz61Oyiym2mUVVz5jF6GoqEXwj+SBIWwE0Z9aHjiMrbyA=@vger.kernel.org X-Gm-Message-State: AOJu0YwVd63bB22qQlIir/Ieze41/rxSCKTBJgBAF9DrP4hFFiIr5x4C 7LZ3aDuKpzwcE+UovmZN7qSC3o9TBq8xAbnGv6kNXSD6lDJlF8FAr9yHt+vL6rWyfQISMccOqt9 SU6xTYcuaSxJDjoa1sAguE/RawCgxq6Q= X-Gm-Gg: AR+sD10xErZPuOleaBGVbYrSXFCLlqDfm3c2vCr9ZItqT0dLHPIfMW3GlxZKokS5Yzs pQVGOjWl4ieNJyLB+ifrzZ6KOTtDtg2ug7eizW+xgbRiKeI8ifhoenUskFL1CeLuBcU4g4tNaBr 7LMI46bRSYgUL3Op7zjlKZM1tfRIy1xtDQ2g2Fn8oGCN4fIQBFpjOlZEFltWDAD5uC3TVTt/uhR XSPi5VzdybiPULl2L/J0NVajOojfBJS3568lVDxkjJjYLf7RQEni/fmw95tDftDbkrZ0BmQiYG9 m76uUl2j7NqvW8O5G+y/z3ia1HBLfFN6B3Vn9SVhd97RY4iwZFIW7GSepdTBeGeIru2JnA66q6o Q4ry4dY7FrrIyIm3J2Z2KK5WybcDdN0IikFmeP/wCNCsCM94BA4Nx7NB812BBZdCYOKogLw1NC/ S6I3o2lpRQYRIB X-Received: by 2002:a53:ec42:0:b0:664:eb8c:9e3c with SMTP id 956f58d0204a3-66b2328386amr61049d50.46.1786419723806; Mon, 10 Aug 2026 20:42:03 -0700 (PDT) Received: from 77377267392 named unknown by gmailapi.google.com with HTTPREST; Mon, 10 Aug 2026 20:42:03 -0700 Received: from 77377267392 named unknown by gmailapi.google.com with HTTPREST; Mon, 10 Aug 2026 20:41:09 -0700 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Jason Colapietro Date: Mon, 10 Aug 2026 20:42:03 -0700 X-Gm-Features: AUfX_myHsQ52VwnmjRH9a2gnffH86lXLWJczz7oJFqrKYV2cOsVXJTR8qzJz9KI Message-ID: Subject: [PATCH v2 RESEND] usbip: make remote list honor parsable output To: Valentina Manea , Shuah Khan Cc: Hongren Zheng , Greg KH , linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org, stable@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The -p option only affects local devices and gadgets. Remote lists still print their human-readable headings and details, so scripts cannot parse them using the documented option. Pass the parsable flag through the remote listing path. Emit the same busid and usbid record used for local devices while continuing to consume every interface record from the server. Fixes: e9837bbb3e69 ("staging: usbip: userspace tools v1.0.0") Closes: https://bugzilla.kernel.org/show_bug.cgi?id=3D219502 Cc: stable@vger.kernel.org Assisted-by: Codex:gpt-5 Signed-off-by: Jason Colapietro --- Changes in v2: - Make the email From header match Signed-off-by. - Add Cc: stable@vger.kernel.org. tools/usb/usbip/src/usbip_list.c | 33 ++++++++++++++++++++------------ 1 file changed, 21 insertions(+), 12 deletions(-) diff --git a/tools/usb/usbip/src/usbip_list.c b/tools/usb/usbip/src/usbip_l= ist.c index 3d810bcca02..b9d60b87e47 100644 --- a/tools/usb/usbip/src/usbip_list.c +++ b/tools/usb/usbip/src/usbip_list.c @@ -41,7 +41,7 @@ void usbip_list_usage(void) printf("usage: %s", usbip_list_usage_string); } -static int get_exported_devices(char *host, int sockfd) +static int get_exported_devices(char *host, int sockfd, bool parsable) { char product_name[100]; char class_name[100]; @@ -80,9 +80,11 @@ static int get_exported_devices(char *host, int sockfd) return 0; } - printf("Exportable USB devices\n"); - printf("=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D\n"); - printf(" - %s\n", host); + if (!parsable) { + printf("Exportable USB devices\n"); + printf("=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D\n"); + printf(" - %s\n", host); + } for (i =3D 0; i < reply.ndev; i++) { memset(&udev, 0, sizeof(udev)); @@ -98,9 +100,14 @@ static int get_exported_devices(char *host, int sockfd) usbip_names_get_class(class_name, sizeof(class_name), udev.bDeviceClass, udev.bDeviceSubClass, udev.bDeviceProtocol); - printf("%11s: %s\n", udev.busid, product_name); - printf("%11s: %s\n", "", udev.path); - printf("%11s: %s\n", "", class_name); + if (parsable) { + printf("busid=3D%s#usbid=3D%04x:%04x#\n", udev.busid, + udev.idVendor, udev.idProduct); + } else { + printf("%11s: %s\n", udev.busid, product_name); + printf("%11s: %s\n", "", udev.path); + printf("%11s: %s\n", "", class_name); + } for (j =3D 0; j < udev.bNumInterfaces; j++) { rc =3D usbip_net_recv(sockfd, &uintf, sizeof(uintf)); @@ -116,16 +123,18 @@ static int get_exported_devices(char *host, int sockf= d) uintf.bInterfaceClass, uintf.bInterfaceSubClass, uintf.bInterfaceProtocol); - printf("%11s: %2d - %s\n", "", j, class_name); + if (!parsable) + printf("%11s: %2d - %s\n", "", j, class_name); } - printf("\n"); + if (!parsable) + printf("\n"); } return 0; } -static int list_exported_devices(char *host) +static int list_exported_devices(char *host, bool parsable) { int rc; int sockfd; @@ -138,7 +147,7 @@ static int list_exported_devices(char *host) } dbg("connected to %s:%s", host, usbip_port_string); - rc =3D get_exported_devices(host, sockfd); + rc =3D get_exported_devices(host, sockfd, parsable); if (rc < 0) { err("failed to get device list from %s", host); return -1; @@ -351,7 +360,7 @@ int usbip_list(int argc, char *argv[]) parsable =3D true; break; case 'r': - ret =3D list_exported_devices(optarg); + ret =3D list_exported_devices(optarg, parsable); goto out; case 'l': ret =3D list_devices(parsable); --=20 2.50.1 (Apple Git-155)