From patchwork Wed Feb 28 13:38:01 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Marcus Folkesson X-Patchwork-Id: 10247553 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id D6FCC60211 for ; Wed, 28 Feb 2018 13:39:15 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id C71D128D2A for ; Wed, 28 Feb 2018 13:39:15 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id B996228D34; Wed, 28 Feb 2018 13:39:15 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.8 required=2.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED,FREEMAIL_FROM,RCVD_IN_DNSWL_HI,T_DKIM_INVALID autolearn=unavailable version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 6921E28D2A for ; Wed, 28 Feb 2018 13:39:15 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752478AbeB1NjA (ORCPT ); Wed, 28 Feb 2018 08:39:00 -0500 Received: from mail-lf0-f65.google.com ([209.85.215.65]:37280 "EHLO mail-lf0-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752556AbeB1NiT (ORCPT ); Wed, 28 Feb 2018 08:38:19 -0500 Received: by mail-lf0-f65.google.com with SMTP id y19so3550732lfd.4; Wed, 28 Feb 2018 05:38:18 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=e8TXbzC3FpCEtYyQ9vh/NkfMPkiIFhT4KRVB6JQClww=; b=PArW6yEsO0zxcqN4AeWByy7nFb/apZtOuevTdepOqwSPMzDnlxjs46+DpL2IsF1uTT ClR5RcLamDOYCIvuCK+0scqs9mJipAMLcV1ydM3V2zPVXbLGZW7Pgee/FhOppduABOz9 lq9H2yX3zwu2b1/1V4nCef1c51fYSqLwtkVv4WmAIs8YVwfrge/3TTRV5rM08cbIkebX LD4Zq4hIPnlFjqjYd+EhqWC/2lJQdntuXCiI+fdXpN+H9dSd4Lsqi1XmwtxpakddYTiT C4Nce0rGitOnv1d13vbEXM6XLUlS8ha2YDPqbzGmSjv2mWkCoTxiFy66zzoFXsaEpBFw Ko4g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=e8TXbzC3FpCEtYyQ9vh/NkfMPkiIFhT4KRVB6JQClww=; b=rJsJ4k9rPS5Ne8B8bx8FmbwLdIKWvPUYA7pdXZsPJ6MrR68wn3VfrScvIw0nFhMMd4 3sz32uZ93gOm7AW6C0unJ2kjLxQwaQsso3KVZ7Vm34Yjt1AVSo0LI5OY3pHuYvJQ0Jg/ QWv3P/rhpZHfcEOIrdvUNHMcS0aBzsUgWJzbXGBbspNahNEMjfOjt0Fh5oCpNJ+6omba zBovM4o7taDH5CVwK3/xypqHRMMhxPqwPZ+kGoblH4FUVOQD9aWvpin7m51Lx8d5f+m6 jUr2NbhyAnJO2FuptjVRW6/n2uVEqZlzroB851LFLyIHKgY2ZStLQr9jH5QYH7udi2i1 DjNQ== X-Gm-Message-State: APf1xPBnwA1nUCpwNsbrN08sFtVzzdKkGVIAps8QVY7oKEmXzPsv0X+M z6/qSRMi0RJwH3V4ucFr2I8pPg== X-Google-Smtp-Source: AG47ELukmFxtdIfzq2GzZDtEDnDhhFrFb/LjU58p2QnT14h4BpWtBj67iszOt6SOA98hpV2t8Exyrw== X-Received: by 10.46.60.23 with SMTP id j23mr12611350lja.18.1519825097968; Wed, 28 Feb 2018 05:38:17 -0800 (PST) Received: from localhost.localdomain (c-2ec257a5-74736162.cust.telenor.se. [46.194.87.165]) by smtp.gmail.com with ESMTPSA id f70sm373992lfi.4.2018.02.28.05.38.16 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 28 Feb 2018 05:38:16 -0800 (PST) From: Marcus Folkesson To: Dmitry Torokhov , Arvind Yadav Cc: linux-input@vger.kernel.org, linux-kernel@vger.kernel.org, Marcus Folkesson Subject: [RESEND PATCH 4/6] input: pegasus_notetaker: do not rely on input_dev->users Date: Wed, 28 Feb 2018 14:38:01 +0100 Message-Id: <20180228133803.30040-5-marcus.folkesson@gmail.com> X-Mailer: git-send-email 2.16.2 In-Reply-To: <20180228133803.30040-1-marcus.folkesson@gmail.com> References: <20180228133803.30040-1-marcus.folkesson@gmail.com> Sender: linux-input-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-input@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP If the device is unused and suspended, a call to open will cause the device to autoresume through the call to usb_autopm_get_interface(). input_dev->users is already incremented by the input subsystem, therefore this expression will always be evaluated to true: if (pegasus->dev->users && usb_submit_urb(pegasus->irq, GFP_NOIO) < 0) retval = -EIO; The same URB will then be fail when resubmitted in pegasus_open(). Introduce pegasus->is_open to keep track of the state instead. Signed-off-by: Marcus Folkesson --- drivers/input/tablet/pegasus_notetaker.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/drivers/input/tablet/pegasus_notetaker.c b/drivers/input/tablet/pegasus_notetaker.c index 9ab1ed5e20e7..74c93e09c337 100644 --- a/drivers/input/tablet/pegasus_notetaker.c +++ b/drivers/input/tablet/pegasus_notetaker.c @@ -80,6 +80,7 @@ struct pegasus { /* serialize access to open/suspend */ struct mutex pm_mutex; + bool is_open; char name[128]; char phys[64]; @@ -232,6 +233,7 @@ static int pegasus_open(struct input_dev *dev) if (error) goto err_kill_urb; + pegasus->is_open = 1; mutex_unlock(&pegasus->pm_mutex); return 0; @@ -251,6 +253,7 @@ static void pegasus_close(struct input_dev *dev) mutex_lock(&pegasus->pm_mutex); usb_kill_urb(pegasus->irq); cancel_work_sync(&pegasus->init); + pegasus->is_open = 0; mutex_unlock(&pegasus->pm_mutex); usb_autopm_put_interface(pegasus->intf); @@ -415,7 +418,7 @@ static int pegasus_resume(struct usb_interface *intf) int retval = 0; mutex_lock(&pegasus->pm_mutex); - if (pegasus->dev->users && usb_submit_urb(pegasus->irq, GFP_NOIO) < 0) + if (pegasus->is_open && usb_submit_urb(pegasus->irq, GFP_NOIO) < 0) retval = -EIO; mutex_unlock(&pegasus->pm_mutex); @@ -428,7 +431,7 @@ static int pegasus_reset_resume(struct usb_interface *intf) int retval = 0; mutex_lock(&pegasus->pm_mutex); - if (pegasus->dev->users) { + if (pegasus->is_open) { retval = pegasus_set_mode(pegasus, PEN_MODE_XY, NOTETAKER_LED_MOUSE); if (!retval && usb_submit_urb(pegasus->irq, GFP_NOIO) < 0)