Received: by 2002:a5d:9c59:0:0:0:0:0 with SMTP id 25csp2202212iof; Tue, 7 Jun 2022 23:04:30 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxCNS3xJa/PEhBXb2+CQeayUlCYtc1t2xJ8XD3DQ8cQ5jD7zUXuk9mFnMeLgKrDVIKy3iUl X-Received: by 2002:a17:903:32c5:b0:164:1a67:30c5 with SMTP id i5-20020a17090332c500b001641a6730c5mr32126528plr.31.1654668270750; Tue, 07 Jun 2022 23:04:30 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1654668270; cv=none; d=google.com; s=arc-20160816; b=U3pdYm5IHzj5ZqjAKTU7l1QcZbBWkheJ2yXnOg61L6J9n+TjFrj1NqQykIf9TyXiJi Mf5ClM0mYpRsG08JuUkd1+vt0i52+VTECnmaz0l3jFfvxt6CgW6+HU9LNbHZdyycsubj 0ri1qptQTbN3clMXe/lnvfqYukgaZCbgKjPbHB6lP+fJR8fIicToUNzWuz1WtZudRjLk wXR3YVZq5RLAxgA5nLOiG8XEp/EJazmaBJbMd5LPXptV1W5PfofQnJGEKrSJ27za8Ar+ 0RyC8s00HNpv1IMh+fDOxb7uAFXAigqzJ8Eln0IfM0KJYEXVu+7BiApLiFJ5ZmBcSY8T oDlA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=9qJZtxXxLfuMCiXMqu/Xv1C7qz7GatepGwc62RVIS4A=; b=SsQr5UO3Xi4Vt7SEAc0evqnHqXg68X2OVB+Gan+tIR/MBmAJ5XrBUdoujitH/PYH1j q1QsDggq6HixqzOFRL8Gt8fxDHwYR6Jr8OtAO3n5kAFTNajeheNGlIHQT7DD8zxxiwrh PR8kH0EBMTa9Swa85nyLEqzaF3p2J5HKnoMBVCr8vEWRaiV0k2x4cao4VlezUtKRWSdu 8Bzo8T9B2SKGfZVUcSCLDyrJ6/hk3rQimko3RDPbfJKM1QwwzSaWCKbtP5JWEu+4dz/Y 7HYSmZehkX/o4y8svpJqEpfKPwujvGDPs3TANtt6hyrW+ORsw09n86yO4pMsn8R9OJsj rxDQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=uoecNCu+; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net. [2620:137:e000::1:18]) by mx.google.com with ESMTPS id 6-20020a17090a08c600b001e285944aedsi25225583pjn.116.2022.06.07.23.04.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Jun 2022 23:04:30 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) client-ip=2620:137:e000::1:18; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=uoecNCu+; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 692DF47F178; Tue, 7 Jun 2022 22:28:52 -0700 (PDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231359AbiFHBLp (ORCPT + 99 others); Tue, 7 Jun 2022 21:11:45 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38174 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1382751AbiFGWEb (ORCPT ); Tue, 7 Jun 2022 18:04:31 -0400 Received: from ams.source.kernel.org (ams.source.kernel.org [IPv6:2604:1380:4601:e00::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B48F5194BD2; Tue, 7 Jun 2022 12:15:42 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id 56EF5B82182; Tue, 7 Jun 2022 19:15:41 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id B1177C385A2; Tue, 7 Jun 2022 19:15:39 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1654629340; bh=d7M/rrGTQxwwpheykmHfdAUrTOWJWEeOlwizrmgwhOo=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=uoecNCu+Jv+UTyo4KxadkUt6S+Ms9X3AM1/F1kZ9aH6kR1lzlh3J4lz7AnnInG3Ri LJGT2/q2hvPDzWJUrm52fbjXD/CjNi+s6TnT9t1wysyeN7XLVOGYSj9lIBR6A7Xhfn ubTp+njlHerczghV3jrmD2Z0CN+2gND37Oz83z9k= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Pavel Machek , Dmitry Torokhov , Sasha Levin Subject: [PATCH 5.18 656/879] Input: stmfts - do not leave device disabled in stmfts_input_open Date: Tue, 7 Jun 2022 19:02:54 +0200 Message-Id: <20220607165021.886367492@linuxfoundation.org> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220607165002.659942637@linuxfoundation.org> References: <20220607165002.659942637@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-3.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RDNS_NONE,SPF_HELO_NONE,T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Dmitry Torokhov [ Upstream commit 5f76955ab1e43e5795a9631b22ca4f918a0ae986 ] The commit 26623eea0da3 attempted to deal with potential leak of runtime PM counter when opening the touchscreen device, however it ended up erroneously dropping the counter in the case of successfully enabling the device. Let's address this by using pm_runtime_resume_and_get() and then executing pm_runtime_put_sync() only when we fail to send "sense on" command to the device. Fixes: 26623eea0da3 ("Input: stmfts - fix reference leak in stmfts_input_open") Reported-by: Pavel Machek Signed-off-by: Dmitry Torokhov Signed-off-by: Sasha Levin --- drivers/input/touchscreen/stmfts.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/drivers/input/touchscreen/stmfts.c b/drivers/input/touchscreen/stmfts.c index 72e0b767e1ba..c175d44c52f3 100644 --- a/drivers/input/touchscreen/stmfts.c +++ b/drivers/input/touchscreen/stmfts.c @@ -337,13 +337,15 @@ static int stmfts_input_open(struct input_dev *dev) struct stmfts_data *sdata = input_get_drvdata(dev); int err; - err = pm_runtime_get_sync(&sdata->client->dev); - if (err < 0) - goto out; + err = pm_runtime_resume_and_get(&sdata->client->dev); + if (err) + return err; err = i2c_smbus_write_byte(sdata->client, STMFTS_MS_MT_SENSE_ON); - if (err) - goto out; + if (err) { + pm_runtime_put_sync(&sdata->client->dev); + return err; + } mutex_lock(&sdata->mutex); sdata->running = true; @@ -366,9 +368,7 @@ static int stmfts_input_open(struct input_dev *dev) "failed to enable touchkey\n"); } -out: - pm_runtime_put_noidle(&sdata->client->dev); - return err; + return 0; } static void stmfts_input_close(struct input_dev *dev) -- 2.35.1