From nobody Mon Feb 9 11:33:03 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1559112429; cv=none; d=zoho.com; s=zohoarc; b=YE/Z7oLXYS09u0ZGj6ENyBuySnm+8rQaxp2OzqyykMecuWopq7dPWuGsdHlQfV4SgpEO6QVjissi0wFL1p+qucJlAfwqFnN6TSXmwb46SX7CcmlqpKMzOjWnZyazM+URcTFvERzMaOeLiQHKHnHzfCi9/RaVwjYGx52jsYVE2tA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1559112429; h=Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=haUPkBaCdXSgFukT0WUcoTmDAe92eqv6F1Pyr9yPE04=; b=iUFi2tyKHF/WxH0rSstFqfH00UDl4Jpmbbn4YPIU+G569QFaZBoXZcpbdCaiBJ4Z8DRkkJAhB4sI6JQaxmBi0pBFReUncNXf3Os045kcqctUxxiapSdiFK0NKi2lQnWuSk+uYlcssHP5IAai1ILfCSxyRJ+XYffl0yvtk2CIAWc= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (209.51.188.17 [209.51.188.17]) by mx.zohomail.com with SMTPS id 1559112429009594.8584784326014; Tue, 28 May 2019 23:47:09 -0700 (PDT) Received: from localhost ([127.0.0.1]:48022 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hVs6U-0001UO-F9 for importer@patchew.org; Wed, 29 May 2019 02:30:26 -0400 Received: from eggs.gnu.org ([209.51.188.92]:42005) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hVs4m-0000aK-EH for qemu-devel@nongnu.org; Wed, 29 May 2019 02:28:41 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hVs4l-0004eR-EW for qemu-devel@nongnu.org; Wed, 29 May 2019 02:28:40 -0400 Received: from mx1.redhat.com ([209.132.183.28]:48360) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1hVs4k-0004dg-S5 for qemu-devel@nongnu.org; Wed, 29 May 2019 02:28:39 -0400 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id DD9963082B5A; Wed, 29 May 2019 06:28:37 +0000 (UTC) Received: from sirius.home.kraxel.org (ovpn-116-59.ams2.redhat.com [10.36.116.59]) by smtp.corp.redhat.com (Postfix) with ESMTP id B8D4064028; Wed, 29 May 2019 06:28:33 +0000 (UTC) Received: by sirius.home.kraxel.org (Postfix, from userid 1000) id 18A8417512; Wed, 29 May 2019 08:28:33 +0200 (CEST) From: Gerd Hoffmann To: qemu-devel@nongnu.org Date: Wed, 29 May 2019 08:28:26 +0200 Message-Id: <20190529062832.26483-4-kraxel@redhat.com> In-Reply-To: <20190529062832.26483-1-kraxel@redhat.com> References: <20190529062832.26483-1-kraxel@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.45]); Wed, 29 May 2019 06:28:37 +0000 (UTC) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PULL 3/9] usb-host: avoid libusb_set_configuration calls X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Eduardo Habkost , Gerd Hoffmann Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Seems some devices become confused when we call libusb_set_configuration(). So before calling the function check whenever the device has multiple configurations in the first place, and in case it hasn't (which is the case for the majority of devices) simply skip the call as it will have no effect anyway. Signed-off-by: Gerd Hoffmann Message-id: 20190522094702.17619-4-kraxel@redhat.com --- hw/usb/host-libusb.c | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/hw/usb/host-libusb.c b/hw/usb/host-libusb.c index 4e9a45a5d26f..4f765d7f9a2f 100644 --- a/hw/usb/host-libusb.c +++ b/hw/usb/host-libusb.c @@ -1225,19 +1225,21 @@ static void usb_host_set_address(USBHostDevice *s, = int addr) =20 static void usb_host_set_config(USBHostDevice *s, int config, USBPacket *p) { - int rc; + int rc =3D 0; =20 trace_usb_host_set_config(s->bus_num, s->addr, config); =20 usb_host_release_interfaces(s); - rc =3D libusb_set_configuration(s->dh, config); - if (rc !=3D 0) { - usb_host_libusb_error("libusb_set_configuration", rc); - p->status =3D USB_RET_STALL; - if (rc =3D=3D LIBUSB_ERROR_NO_DEVICE) { - usb_host_nodev(s); + if (s->ddesc.bNumConfigurations !=3D 1) { + rc =3D libusb_set_configuration(s->dh, config); + if (rc !=3D 0) { + usb_host_libusb_error("libusb_set_configuration", rc); + p->status =3D USB_RET_STALL; + if (rc =3D=3D LIBUSB_ERROR_NO_DEVICE) { + usb_host_nodev(s); + } + return; } - return; } p->status =3D usb_host_claim_interfaces(s, config); if (p->status !=3D USB_RET_SUCCESS) { --=20 2.18.1