Received: by 2002:a25:7ec1:0:0:0:0:0 with SMTP id z184csp6029041ybc; Wed, 27 Nov 2019 13:41:28 -0800 (PST) X-Google-Smtp-Source: APXvYqxctZR6EsTWeM4595KcmuuOf1XFjRek+nQObptdjiW6ZT3X73jTHwtgZePq1L+OAYTqxGfk X-Received: by 2002:aa7:cf19:: with SMTP id a25mr28113498edy.237.1574890888263; Wed, 27 Nov 2019 13:41:28 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1574890888; cv=none; d=google.com; s=arc-20160816; b=ccJepdUI4Fv9uBCsOsuY6aKf0hBzV7E2SgQpmEXGEzYMHCiY+r194KCHlLZqw3tfNj VtAr3XiDvRJYrrS5cEb+nZqVUEJKvu+vc3WsQ1u9uEmAKDFHjgkMSoSz8S0uVCfPOYCX 9EtQtDk6l2xKc6bCmULV+mXMVwztiqm6DDlCOIIDjkKjZZm4KE3eF1MPnFfS8jumL/8p 2zoXUw8gkqZULIsW7D6rypCQkrn6OYwoeIO9x1Ik8O6kPUCubvuw0Eyu9iblcKe9b6Ca PiEuFPkxSpZvpKracGl3cjCa6NyGM/6XDU93e/MLI1p1qboIzwNO1b1oUWNQ5l+a+bEX RPsA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=asqxktqrtUyM1L5DPXJKV6zUONyGbzm6OEdJTNhxvRc=; b=d+MREx07hfjtVeFV5VzBITGLc1HBMEmwSAdbNai8HCohccvDMhay5j10t3WveWUhGs 2e9HAGu5d8n9ixrMZpcubsBLSzqYKE8XSMfuu2Upeek4FjT1q4Jq9n2cGl49ZPrL4HKD l2p9t9whWsFgZBDGELj78ZLbT2rudd+S4/MB+Qg7zCIifCcqUwD6S3E9nasqc92dtU07 muVD2hyA0g24Stz+RV6f0sW8leHBXFLZ0uIqPkCseL9JWySkDVUo+FbPoGg9aa7Qpkir 5MUtpS8X6W3i45kYK8zIvOJdebQJiRwNkxv8/K/DxvSFD84Y8IJPFX3taHw3ubkINPTS o6ow== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b="SDQmre/q"; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id m4si9987528eja.96.2019.11.27.13.41.04; Wed, 27 Nov 2019 13:41:28 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b="SDQmre/q"; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728298AbfK0UpZ (ORCPT + 99 others); Wed, 27 Nov 2019 15:45:25 -0500 Received: from mail.kernel.org ([198.145.29.99]:55826 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727487AbfK0UpR (ORCPT ); Wed, 27 Nov 2019 15:45:17 -0500 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 7A3E821780; Wed, 27 Nov 2019 20:45:16 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1574887516; bh=k16vSFfB3VcnFtGPPlm6toStzxruCtOzTNuNmFq9ccA=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=SDQmre/qGg3Netny21fYegGrSkmGsDxeTwKCfO7Ednp1bC6WeXkWqp0JhaXYgVKC7 SaIiGVH2lHnxYI2b9dtBJ8UM24bBe/rN4LzOvqJMuHA+RCKDxFIOAP4qhWJoTlSXqh q29ig4eXv+KbZQQESWvtZMQea1R4k+Azmb9Llv5U= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Oliver Neukum Subject: [PATCH 4.9 141/151] USB: chaoskey: fix error case of a timeout Date: Wed, 27 Nov 2019 21:32:04 +0100 Message-Id: <20191127203047.107855223@linuxfoundation.org> X-Mailer: git-send-email 2.24.0 In-Reply-To: <20191127203000.773542911@linuxfoundation.org> References: <20191127203000.773542911@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Oliver Neukum commit 92aa5986f4f7b5a8bf282ca0f50967f4326559f5 upstream. In case of a timeout or if a signal aborts a read communication with the device needs to be ended lest we overwrite an active URB the next time we do IO to the device, as the URB may still be active. Signed-off-by: Oliver Neukum Cc: stable Link: https://lore.kernel.org/r/20191107142856.16774-1-oneukum@suse.com Signed-off-by: Greg Kroah-Hartman --- drivers/usb/misc/chaoskey.c | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) --- a/drivers/usb/misc/chaoskey.c +++ b/drivers/usb/misc/chaoskey.c @@ -412,13 +412,17 @@ static int _chaoskey_fill(struct chaoske !dev->reading, (started ? NAK_TIMEOUT : ALEA_FIRST_TIMEOUT) ); - if (result < 0) + if (result < 0) { + usb_kill_urb(dev->urb); goto out; + } - if (result == 0) + if (result == 0) { result = -ETIMEDOUT; - else + usb_kill_urb(dev->urb); + } else { result = dev->valid; + } out: /* Let the device go back to sleep eventually */ usb_autopm_put_interface(dev->interface); @@ -554,7 +558,21 @@ static int chaoskey_suspend(struct usb_i static int chaoskey_resume(struct usb_interface *interface) { + struct chaoskey *dev; + struct usb_device *udev = interface_to_usbdev(interface); + usb_dbg(interface, "resume"); + dev = usb_get_intfdata(interface); + + /* + * We may have lost power. + * In that case the device that needs a long time + * for the first requests needs an extended timeout + * again + */ + if (le16_to_cpu(udev->descriptor.idVendor) == ALEA_VENDOR_ID) + dev->reads_started = false; + return 0; } #else