From nobody Wed Nov 5 13:19:04 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zoho.com; dkim=fail spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1497394947967771.1111962895217; Tue, 13 Jun 2017 16:02:27 -0700 (PDT) Received: from localhost ([::1]:45609 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dKupO-0003c7-HD for importer@patchew.org; Tue, 13 Jun 2017 19:02:26 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:42977) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dKuoS-00031L-Uy for qemu-devel@nongnu.org; Tue, 13 Jun 2017 19:01:29 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dKuoP-0008SY-37 for qemu-devel@nongnu.org; Tue, 13 Jun 2017 19:01:29 -0400 Received: from mail-bl2nam02on0060.outbound.protection.outlook.com ([104.47.38.60]:33968 helo=NAM02-BL2-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dKuoO-0008RO-In for qemu-devel@nongnu.org; Tue, 13 Jun 2017 19:01:25 -0400 Received: from localhost.localdomain (103.48.210.53) by MWHPR14MB1232.namprd14.prod.outlook.com (10.173.101.150) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1157.12; Tue, 13 Jun 2017 23:01:18 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=accelecon.onmicrosoft.com; s=selector1-accelerated-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=NAf3Awt+Kyw3wLp0eZAtXpcy2Gy/x5Bamu82hJuPf8s=; b=HsObLXWt/IV5H4pWA/kbH8GyLFGLVbd5/a6bh6EYAjm9/jFNCjeCFCTg8Lz3cFrLy7wKJAZQIHequtCCYx462u1Tj8UH2FBoW1CUIoCnaleTBsqw5GxIzlzc1z7kcZNgZN2NNuVmQVL89fzA8uROY8cWSYO8w333SlxBj7dZFwc= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=sam.brian@accelerated.com; From: Samuel Brian To: qemu-devel@nongnu.org Date: Wed, 14 Jun 2017 08:59:00 +1000 Message-Id: <20170613225900.1641-1-sam.brian@accelerated.com> MIME-Version: 1.0 X-Originating-IP: [103.48.210.53] X-ClientProxiedBy: SG2PR0199CA0034.apcprd01.prod.exchangelabs.com (10.162.195.44) To MWHPR14MB1232.namprd14.prod.outlook.com (10.173.101.150) X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: MWHPR14MB1232: X-MS-Office365-Filtering-Correlation-Id: f6ca74fa-2ed6-41e3-0150-08d4b2b01aec X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(201703131423075)(201703031133081); SRVR:MWHPR14MB1232; X-Microsoft-Exchange-Diagnostics: 1; MWHPR14MB1232; 3:yrrCcXN2Z2Odu7FAc477YJxYmMBh9w7ctVwXgz11OHpjW32qqSg5grDGfKZ6fmYTywsugprjZog/INpLbCG5zV3nVDHBMTjC+3y7HeFndNOgMNjqb/Ct0SDawaBPwzH+Fk0BLk/G13GHfE0mf61wabxj0mvjRmwZd5CP7b6z0Fsh/kZ1BtvoVuVuLWcA63e7CwcUCZk7UekKI42Kb9dIxgWWPaMOQufZF0XDzScpkobj+RKJ9SeODc2TvRr1wESEdMz6LbtbAZl6iWF4QJvmTHz6KSJ+isQSCeVD/TDczg7KnYbO3g0coI+EdeIA1Z91VgacosADWqrglRtZYriuzg==; 25:oGo/7pBkKQNMtRm7ZWkJlwNaN66LXQ2hB6wXtphfI9ek6/tjNSUBZUtyDQRcn8Xi42kFTfbTzocdtddYm/3PTT3gMqk65mI/Xyz6Qb+lsgyjlqt4sFRQiJhlGQibp5qOrG+QTyCeunZWcwO3444BvkchTyIMHu/xyM0riAn/Zhf4+oR+jfhP/n5Y3muS+tjUOdbW/CdTlzrdU9TJ6Bu4bL8zfx572fqyG6G89kqnKZhYImKubpQk2Jp+cy8fROZya1ImLzQ4Ym/3sQRj8mM07H5tMD14dnSukoXR3LrCo9UCB0eUqyqvFYrgO3beSnmGnsamD6Ug7Nel5EsrBEEFk+4uCV+zAKbKMsqmSFO20YnhS2Oecl80Rd9y0CJrjqq0e3T9m7BDqj0ajgXc4Hriux5BWBforBwLvxhYJVl7DwAaMRmV8AOqKqhpZJv/a5SwMOHtPAhZO+dZI7lxJO9m6B8Uc5awxDq/66gtl7B0sr4= X-Microsoft-Exchange-Diagnostics: 1; MWHPR14MB1232; 31:kfKrW9F6LNHXUxpqD9UelY4+OGYGQLuLiPfioaUcdK25hUyeLdPRkWuvcceFHkQRBnmiS0TlypWT7mOb0SNokbQ+3q7K9uHwVcp7IuA+c23/ARLEUfJOssitRTcFOdJju4hoaeRnf1DQ4yTvahfixyYNWpsE7Y2vJscwCOA0nCxb3O8g6FUsoCdXUTpa83QQFF9BZkVjH+Qdo9HsUoqRJlOGcWDd6RJMDgvMfuXUwLE=; 20:cWCqY7u8MKrVvzsq9ZzDTe63rQeRnHv0M99sLFVPHhZEDK+cgL1BV4jm/noXmXQ+rjQoJlkbmpyGWTCPt9OEpqSpj8d7AlQVrsNHlPmeOefmnAoVHuDOCfXRIICw4Av2RXgYnqlwHymesk42Ho7/MTrx7gjC4iBSG3eMozmY7WEvWqD1BAmxcHOFG6k7YyMvmfNcWFTo9QX8Cj/Wg/HchAidE1UWfeRMKmV4A4cMuZODpH7ivk8glLw993AKixYkQV8Eu2lPwlCJrwbSRSlX1IdHC3OnmsusrJdzoEdAnMXDIHFbszyizLer6PngUkP3azi/vDigKww0Pqi4AwkLHY63aC5gTZ18Mm8duLOrNgfdIsr42wj9m3By9AoXVNhqZhj9WYh51klFJTajPjFHOycBxGZHtprMGT4nfnshISuudOyYeZM0uwLbIXt6qSUvboVLwxYFVpBBgFjiN+wDpjvIoUjDYELC3B5FBuu4LqiUzGeD6L23nk5lNahkP+pvuPR+m6LaYo1vnuM5E8+K/mWyZQVJJw7ty39ydme5x897BVz3gw7A0A6efnHBAgtQ9nPFgkqnX9C9SwKQTy/hvGPh3uNbCjKBPLMCJMhLuQA= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(8121501046)(5005006)(10201501046)(3002001)(100000703101)(100105400095)(93006095)(93001095)(6041248)(20161123562025)(20161123564025)(20161123560025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123555025)(20161123558100)(6072148)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:MWHPR14MB1232; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:MWHPR14MB1232; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; MWHPR14MB1232; 4:krbEb49qjkzhVEmxcQIkyHMSPzqhWA1yXCIDobwTLO?= =?us-ascii?Q?MfEK2FqcH5X88q+0i4XJhkZ5FDXXM9xmG/XaHbbiIMMMyX3DV1nkcSgbC+oj?= =?us-ascii?Q?G2DSHWCI/nEgXKlCyOaQOGtwZS2fVVGPnaZuaE9l88MK5bcnQsyHmC/AhXi7?= =?us-ascii?Q?TkafcyiBul+sMK7Xf4jfZnMMEOHew3CUNFlXWPQdEt/IdNEPfWvdLahZ+cSi?= =?us-ascii?Q?HzOszpYiCqwuE9AKSUlJO+hw3AjsPnekbjXYdAq/IMu/EOZqG17ZEIKnkQfJ?= =?us-ascii?Q?HF95a+CJLVS7WAaThvnIbjZ7yR1bPImb5e+LaWR/twMs8CceV7CkjOfkiv0m?= =?us-ascii?Q?eg6mUcW/WP6nwGmhJHrSULC4C1TE67IFvcjZPhJnsLYvzvQ/9ISTs/vFClBw?= =?us-ascii?Q?784CeBgUNlWk24bFUndcICKfTFAk0fyUqgy8a/JXzzaulO04lcfsTnYvZShb?= =?us-ascii?Q?fGEqYiFC+rMbqGsAdxsDtwpt2amLfL1wRfZEScycVqiDofvd8JQS6dVLU2Ht?= =?us-ascii?Q?0QtrT5VXCKr6D+X8q5YO/M820arCO7eIgyeFhSljDjJ6x4dPa+NuGO1HbXzE?= =?us-ascii?Q?MWEDQai4EQCkK8H28Pcx43BWX4ewYvzygvi2FS+HRDxuaOsh8vg64gjU5H5p?= =?us-ascii?Q?YO3+7XuJ5R3N0HEpE5jDYYUWcRipY+7s7YGbEqEuaJzwyAjmT8TTU1b72ifO?= =?us-ascii?Q?A1zkAqEEJQStCsNhTpfj9hIEfSTtqORTv4oEMaZ1FEUhl6rrR1bZe337+1Wm?= =?us-ascii?Q?LQzzmK133aSMBnWi6n4L48TX/CLv5G938bLqUi+XCDapudBSz30pY5XE3NLN?= =?us-ascii?Q?tPWoN+HmA9jm0BYDQtd2jbADZhEE+AJfTfa8OHxvkdRYYyXAHONxrsLS/aRs?= =?us-ascii?Q?22vkh3ewFQ2BP8qTUyHEqGfTcnQWrrGrrs9s6i5HAuauitU5mvEEpMx3lC0y?= =?us-ascii?Q?puNEhyaaRXCZvB9YlKqyc+wD9Ej0I7ZahyO4bk/HjsjFKojJuRG/EhM/tU6B?= =?us-ascii?Q?nj8Zu5tWf1VK3sEHyY7ltPb2/+4PVUr/lR5wwzFB7fd7RourZJusrmtqiwPO?= =?us-ascii?Q?HlAwkCje8fr4sbesQ0OP4kHo83d+jxW4fqDRf9s4uDzjZGmU5xryniN7ZW2T?= =?us-ascii?Q?M/f1rsApPZTnPpfD4VeIO8OnwWNXQn?= X-Forefront-PRVS: 0337AFFE9A X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(6069001)(6009001)(39830400002)(39450400003)(39400400002)(39410400002)(199003)(189002)(106356001)(6666003)(2351001)(97736004)(105586002)(81166006)(66066001)(81156014)(2361001)(8676002)(25786009)(4326008)(36756003)(53936002)(48376002)(1076002)(47776003)(50466002)(6512007)(54906002)(6916009)(3846002)(189998001)(6116002)(33646002)(5890100001)(305945005)(50986999)(68736007)(5660300001)(2906002)(86362001)(7736002)(5003940100001)(54356999)(101416001)(6486002)(107886003)(38730400002)(42186005)(478600001)(110136004)(6506006); DIR:OUT; SFP:1101; SCL:1; SRVR:MWHPR14MB1232; H:localhost.localdomain; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX:1; LANG:en; Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: None (protection.outlook.com: accelerated.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; MWHPR14MB1232; 23:9jTqKpw7h7is6chrG78dhdEoBwY4Fa7b++ZdU6dTx?= =?us-ascii?Q?LMB+noYLJHbzQB3E7jrqKpZ/rA0x1Hqr0MoR2OQe6gYdMFSin+KDUJqAtb5A?= =?us-ascii?Q?ZE9A7tAlWr7SPiEMO7GXeKMwmoaGfkb+Cw/cj5fTahJuPDGk0N66ai1H64I+?= =?us-ascii?Q?r9rkBdGp7Fr8mgVveErfF7GW+KqFeU/HwSRJm9z531VX8IUK1lWceNfwYzQ9?= =?us-ascii?Q?Zh9BrdTKFj/RFsTf0t1YmYF7+LmQTbu2HuS/ZHUH7y3faUMlpZ8QrKByw+9R?= =?us-ascii?Q?6KqqnAqY4L4Nijd09C6N6p/iwfluqLp2rm6GrNOjHxj4sV+zzv0AVCDrYryI?= =?us-ascii?Q?Dm5XMst39r+q5zdxT384t7XL5sbJ+LtyTaMaaqqT1N1KOzng/90/NGSc/ozL?= =?us-ascii?Q?muQR9STT67aJiou5JXZNyrorpdJV1JA4Q5Qk6uhbOqW0uSVu2k4NzockmuJQ?= =?us-ascii?Q?Dy/JDkCG7ZCzAxGbbKjwNBIFOWwTRUw6KPA6y2K2y4cxwwnQBoKW7LqXglsd?= =?us-ascii?Q?LNCCDq5xBcJCueoBjn5bynV5PvLBIxtgFiRwxuSpihh4+J2eFEz5GkxiMwQH?= =?us-ascii?Q?aRFCMS8vaJP1IG97tbLq153wU2KxDWFsrLNqIM96f7M/1Uh9FYBLgsc6jXuA?= =?us-ascii?Q?gSlH0jkQ+Z/uWrXhS3p7uOqjJlxVMjjPGSmyCr8ED2O2/cJ6gHsiKyIcAWXC?= =?us-ascii?Q?19TMSYN2YgvB3gX2Mk+YL++T4r2AcdtR7FruSCSxIdg3UwOgQd1zbvtdDi5y?= =?us-ascii?Q?LNhyt7rUFPJgg7FkLtzL3ZwIeAQ5y7f0PXDMvI82ADd1xqd4ubByH9WkAZ8j?= =?us-ascii?Q?NP8p4PLL4ZIgYaCvIBAZzIF5puRwUAWioZVLuTclu/DnYc4USuuqMCniSdVm?= =?us-ascii?Q?m7F3cBnZdeJjwBaGjGHRSnCRfEnm1aXDkZw0RARQ3X0zdul3rHqBAnpPKKbd?= =?us-ascii?Q?M8xk2whDJRqc2hmQALZNqSPw69sbMV+afQcZ0TeJ5UsFtV8g2ZCsm9zB0o/k?= =?us-ascii?Q?ENwiG/YXcCiMtQ5NnejXJiIzFUL+H26P7eXCTuw3X35JGa7G0bie6d1OMv9O?= =?us-ascii?Q?Ai6EeiBwMF3zKaX+Lnak0BkVeqstJS0B6ZMJZ0Eqs6y08c+Vdl0wjMtc7DhK?= =?us-ascii?Q?OuHRXOHI/dJSWa+bDkwSlE3RbLP6hZOj40rBsLzsZoKBUUXwrWr5BN6tZ3BE?= =?us-ascii?Q?TauMtq3CgeE8QipJwZxNDKxyNz0OXNod67kka2uxbd41gfw0r/vWzV2fzWoI?= =?us-ascii?Q?tAEmlLcmwO6NXIsSvn1W7UeFpR9gv2jOeVqlNlJ?= X-Microsoft-Exchange-Diagnostics: 1; MWHPR14MB1232; 6:ZyhdcM/jfLw6gQNZ6U0O+7aikkz3OVXSdGgiZRSyxVEpWxEr4xGjaVqag+JK/E0mtb9D9rqQTvEYB1bTuzZwOKiU78ohWNY49gtQLgxmbFpz3gS88Wck59GEZBGjWAwRxq7zodYZB704IbomjrTlaErQSt2+Jon9CrRs72JQ1GXoc6cp5W16q9ilgJJsZNHuVUDpeARcZC3Wqror+LGDr8BhlUsHPU9EH3oZNMvCOgj1WD8ChoAU8NiO/1ru1EwGism6Gn7U+iuwJxVKYxQ+E0EVGJF5EEcjll6wAsak8CFl+4704pJCn+Qjwy5xrMk3V1dKntrbFh4tfTHV91ze9s3xQvRlDY5+GTTiVaNkNxN02nRZxYH2evQp11rVKwb4pNUk+Q079eQX5tCMFjY9wUjJufZVcF1z+MCdZ6h2NnpxzM4i1Vi+AhhBM1CGYabMbxkuVvkLm1DDRBnFQ6V+DO0RUSYougNwFd49+oDdf1UPdjDXRBuXvQp8ogife78XX0CCgeRsX8CqXkP9FYIiqw== X-Microsoft-Exchange-Diagnostics: 1; MWHPR14MB1232; 5:NRyKPP2lXML2G9v10TNLU/Iv+h42jQMVZI72l9VLMCENTLWgtHiUaMKkm+dW5wfH1wvy+ql7AE4vu2htT+WhR9LuRTBogxA6wWmX0+rhsMJBLik5ndU9sNJxu7JyRW2J+Gfpt5h9S6Xpo9xlyR5syABsaNt28FX0dHZ9jiQKH1xtNznuuEbraOxerhotrA7C6vzDxJ2A8X+5u9i9/k7WHGoM0WN6spgaiNIwrjxwzDqHwoprTuYI3S6tzx2Vr7G2KNkiFbsFe2dO/GxTtYIofbwagKozL4WI/mz4I/Y0uF2iEVxoofAXLkT5rnuYZ6IKS7pap3TFmBbfgfFa8np273woNnl/gMwe5rvCMKLnLjISPEqUygGOvSLiEWJLeUKHMmtPkHx0uKCfgowPbAS8EFMQ9LT2XeubnkgRWphErW9cRL9EMqTQCkgiJIiNaoBu/u/2P/XOANF9eM7p6ozQMwNirUyUh7PhfGk1mZtOo0gkY6BYpylnb5WLCYCOB4XI; 24:d66lhMvrxchHj08ZCbGd5MtKb4+DBKti6EIfuwxjNCQ2AFglV4pgoC7pi9gtKWGDRoxCyakphSzcH6jKtrcfoE4IMwuLpXv5MM6ZOFFAOME= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; MWHPR14MB1232; 7:jVo8zPKOVTeyhh3pYmCxPr+24NM91iOMXOcAVfzxitkLMu6RRueXQzT6nhCrIgj4PI3EBaVOHM/jU7i1hk9+2bTLc2JqFUvdpr0C43Z44dkf5z3LZO7vWFaGaqCj3h0LwDez7KAOwaMf9/sbd+Nv4MxovKt6xle207EwpPJ2vnFk7NoLkuWALgMN/Oe/CQ7qumMeeX8xWaoeWgzojZBVT0Jg40F+1AOJP+hnBcxBTmMcV1G4cFncZ1bgE54tzpDD9wSAZPjPa1HGpcPXRpQ+YOmPSVS0+gZyASTqd0ddtluYzjLIuUvd+FbFuyfHupxJe9kXLNTTGEcMFziQ1w69mQ== X-OriginatorOrg: accelerated.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Jun 2017 23:01:18.7213 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR14MB1232 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 104.47.38.60 Subject: [Qemu-devel] [PATCH v2] usb-host: support devices with sparse/non-sequential USB interfaces 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: Samuel Brian , Gerd Hoffmann Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Some USB devices have sparse interface numbering which is not able to be passthroughed. For example, the Sierra Wireless MC7455/MC7430: # lsusb -D /dev/bus/usb/003/003 | egrep '1199|9071|bNumInterfaces|bInter= faceNumber' Device: ID 1199:9071 Sierra Wireless, Inc. idVendor 0x1199 Sierra Wireless, Inc. idProduct 0x9071 bNumInterfaces 5 bInterfaceNumber 0 bInterfaceNumber 2 bInterfaceNumber 3 bInterfaceNumber 8 bInterfaceNumber 10 In this case, the interface numbers are 0, 2, 3, 8, 10 and not the 0, 1, 2, 3, 4 that QEMU tries to claim. This change allows sparse USB interface numbering. Instead of only claiming the interfaces in the range reported by the USB device through bNumInterfaces, QEMU attempts to claim all possible interfaces. v2 to fix broken v1 patch formatting. Signed-off-by: Samuel Brian --- hw/usb/host-libusb.c | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/hw/usb/host-libusb.c b/hw/usb/host-libusb.c index f9c8eafe06..2e3a752ef6 100644 --- a/hw/usb/host-libusb.c +++ b/hw/usb/host-libusb.c @@ -1107,7 +1107,7 @@ static void usb_host_detach_kernel(USBHostDevice *s) if (rc !=3D 0) { return; } - for (i =3D 0; i < conf->bNumInterfaces; i++) { + for (i =3D 0; i < USB_MAX_INTERFACES; i++) { rc =3D libusb_kernel_driver_active(s->dh, i); usb_host_libusb_error("libusb_kernel_driver_active", rc); if (rc !=3D 1) { @@ -1130,7 +1130,7 @@ static void usb_host_attach_kernel(USBHostDevice *s) if (rc !=3D 0) { return; } - for (i =3D 0; i < conf->bNumInterfaces; i++) { + for (i =3D 0; i < USB_MAX_INTERFACES; i++) { if (!s->ifs[i].detached) { continue; } @@ -1145,7 +1145,7 @@ static int usb_host_claim_interfaces(USBHostDevice *s= , int configuration) { USBDevice *udev =3D USB_DEVICE(s); struct libusb_config_descriptor *conf; - int rc, i; + int rc, i, claimed; =20 for (i =3D 0; i < USB_MAX_INTERFACES; i++) { udev->altsetting[i] =3D 0; @@ -1164,14 +1164,19 @@ static int usb_host_claim_interfaces(USBHostDevice = *s, int configuration) return USB_RET_STALL; } =20 - for (i =3D 0; i < conf->bNumInterfaces; i++) { + claimed =3D 0; + for (i =3D 0; i < USB_MAX_INTERFACES; i++) { trace_usb_host_claim_interface(s->bus_num, s->addr, configuration,= i); rc =3D libusb_claim_interface(s->dh, i); - usb_host_libusb_error("libusb_claim_interface", rc); - if (rc !=3D 0) { - return USB_RET_STALL; + if (rc =3D=3D 0) { + s->ifs[i].claimed =3D true; + if (++claimed =3D=3D conf->bNumInterfaces) { + break; + } } - s->ifs[i].claimed =3D true; + } + if (claimed !=3D conf->bNumInterfaces) { + return USB_RET_STALL; } =20 udev->ninterfaces =3D conf->bNumInterfaces; @@ -1183,10 +1188,9 @@ static int usb_host_claim_interfaces(USBHostDevice *= s, int configuration) =20 static void usb_host_release_interfaces(USBHostDevice *s) { - USBDevice *udev =3D USB_DEVICE(s); int i, rc; =20 - for (i =3D 0; i < udev->ninterfaces; i++) { + for (i =3D 0; i < USB_MAX_INTERFACES; i++) { if (!s->ifs[i].claimed) { continue; } --=20 2.11.0