Received: by 2002:a25:7ec1:0:0:0:0:0 with SMTP id z184csp6006243ybc; Wed, 27 Nov 2019 13:16:28 -0800 (PST) X-Google-Smtp-Source: APXvYqzu+DfY6B9jK6A5yFfhC3n6iG/5HSY19415HdoZhZeWWLUXFmyAG8D6nXQgSF2FUoHuOaJ7 X-Received: by 2002:a05:6402:13d8:: with SMTP id a24mr2208349edx.64.1574889388129; Wed, 27 Nov 2019 13:16:28 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1574889388; cv=none; d=google.com; s=arc-20160816; b=X/02MZC87NQz/lqXbKuei9M0DhiUdJG9PAKtdiX4nrIaiWz6xM2VOiqbeAzzHjAYAZ 1BTw/I/OqVjKr0OXSMw5hVA2e7htQFwIpb2oNUbvtCikzCjKJCvETK7JO+vdC21A077u w65FzK3oTvMsITsDrWhEQPYqWR6AXhpRzcgxGnD+DUGUpcmtxCD7R9erQ+7kZ3NITbqZ vYkY6JdwlX8vG60a4zXPGJCFp/+zjVFZVRAptQUD0W4BXv+6zJ0XAGXH930P1My68JFl UnnkFqsivb1LT1h5d32qzPW7ixA56XnalntmaF5ETsSd2/B7xAG0AxACn633ta8W+nvK VaYg== 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=GLMsjEzJ/9+gPKPWtwrjj4k4qeeLxc/Ifp0Vm+UTXLk=; b=HvOmAtIVS4gP1v82ZRbcaDIp1JYgVg5Pdz5adDrO0W8gcA96YL4NpcI3jhB2b6qBpX qTQ3l/QR+fRIBLG6Y3pT0AVKqG5GTedFPuK4zBDMu6EpkVQksJ78TGj4m4JPIIDysbcj 2PiOyU+tIe0HK/LysJdWSmpPxlmqAIgDGSiyUv8Zby2Xz/dXcGCp7jkhI2fMhgzc0cRi uCm522qEM8SwSJ2CSo6CDvNdI0tzIymoAqc+PE3TShXGAW0ZUE3iGWUv1KUGNCs+Qk7N BybXDcejOb5Yo+HZl3RPtp+tD6nkscdaBubdVeWj1BsUtO0qq5nAt8CtIk2S5jE1SvY1 peNg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=JrQoHrrp; 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 o2si925176ejn.366.2019.11.27.13.16.04; Wed, 27 Nov 2019 13:16: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=JrQoHrrp; 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 S1733228AbfK0VLw (ORCPT + 99 others); Wed, 27 Nov 2019 16:11:52 -0500 Received: from mail.kernel.org ([198.145.29.99]:41080 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1733221AbfK0VLt (ORCPT ); Wed, 27 Nov 2019 16:11:49 -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 EFF0A21555; Wed, 27 Nov 2019 21:11:48 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1574889109; bh=LfA1WHC3J8XPfL/CFiTC6sNIBPjDAA/6b3KwEk0Dals=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=JrQoHrrpwcTJXNE0Z4067HF/veqUB6DN7nn/V/vhhadGUfywPnOLZkjJZfBaHBouB Dto9b588Ht1Ys2gsTv2HNOq5/JnQvSVfCMuAZimv5n7RP0nFAOixOObGl1e5xErFgO Liuc8xUJZTn3Yp4HcEJwFjUntsnb93WNrZz3uTiE= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Oliver Neukum Subject: [PATCH 5.3 85/95] USB: chaoskey: fix error case of a timeout Date: Wed, 27 Nov 2019 21:32:42 +0100 Message-Id: <20191127202953.570882475@linuxfoundation.org> X-Mailer: git-send-email 2.24.0 In-Reply-To: <20191127202845.651587549@linuxfoundation.org> References: <20191127202845.651587549@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 @@ -384,13 +384,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); @@ -526,7 +530,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