Received: by 2002:a25:7ec1:0:0:0:0:0 with SMTP id z184csp6013529ybc; Wed, 27 Nov 2019 13:23:55 -0800 (PST) X-Google-Smtp-Source: APXvYqxca2lQH8QKnPwP5VfgcwYqiahLBM0jv4gmRlPMgCaYccwO1wjp88bzxZHlkm1BXYhjTdn/ X-Received: by 2002:a50:c3c5:: with SMTP id i5mr34542380edf.137.1574889835147; Wed, 27 Nov 2019 13:23:55 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1574889835; cv=none; d=google.com; s=arc-20160816; b=W4lFQ1q0rnmHIrc7SXf8kXlULyE6PzO5JRNCJHbywVP4zQ4CkAmmK/tyF6fmkYhjeW lxlunBVQ099nYz6SNF/i6mre2hT8aXrY1P4A81kYapvhTQQFmREuyoLHFmKweXXuMeNf b/WAb2+pkOlp+DnYhGvqueuSWKX8WWhXvODW2Qj7+uT6y3fh5DResqO4r8qbm+c5C3Lz 8ur+UVdfGeUdixSt+enfyGn5ciklwuh1ezI5Wsp6fk96sPYOUEBceQhBwhOhsLITjsSM vuzyL4HfAVOSBFDuiXc5PR8AI0co1YHDyxt+JGcdqxJvqFqXql+f2P7tE2DG6KatCGSz eJMw== 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=uy5/YsAb9dnFwZkIfcCCqV1ElOXMUtelpHOemh9tleiGeku0bcCBAyfFCHc9Pz5IjS AT0doCVh4H5z7meMEd8L+yZ1FFbz3ZvL3+U7BkwaFrsA0Hp0sQnRvE8Dd11ms49YEGH6 m3nMhG5rJ9qdHAF6HoTsdqs2wO28ysIAuIpsXKgAlQXlcgB9IDxGse2kjnXqTFd7rEUo uPr1SNyhqIhctuJ677XZcNKrjgHAGLALjd0OjmPy20VQdztyCsUgqah2PDZtnXBPgUCS dF0WWAp3gH2yqwyVc44ZrBPTbPcVoI2qyl7pWqIAgIc5/M41cO/8ztUj9+wvUB7etV05 hdXA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b="iVj9HS/x"; 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 y3si11179876edv.423.2019.11.27.13.23.32; Wed, 27 Nov 2019 13:23:55 -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="iVj9HS/x"; 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 S1732625AbfK0VVS (ORCPT + 99 others); Wed, 27 Nov 2019 16:21:18 -0500 Received: from mail.kernel.org ([198.145.29.99]:33728 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727192AbfK0VHd (ORCPT ); Wed, 27 Nov 2019 16:07:33 -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 A033720637; Wed, 27 Nov 2019 21:07:32 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1574888853; bh=LfA1WHC3J8XPfL/CFiTC6sNIBPjDAA/6b3KwEk0Dals=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=iVj9HS/xNmicmALGRfGp8EV8MHr5Hk9MQNgJvke5w2fuQM+9zwSkrGq9l0ksj27zK O/CTPv/0pVYjyfdstQKXRmWWgR1A1DWT4tOgBGwlihRv1sJHUp9wp+xlPqliZFYN1S jxw8OYcDxg0lywO9+Pai+ovon+9QY7vj4CEklLxw= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Oliver Neukum Subject: [PATCH 4.19 296/306] USB: chaoskey: fix error case of a timeout Date: Wed, 27 Nov 2019 21:32:26 +0100 Message-Id: <20191127203136.364101637@linuxfoundation.org> X-Mailer: git-send-email 2.24.0 In-Reply-To: <20191127203114.766709977@linuxfoundation.org> References: <20191127203114.766709977@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