Received: by 2002:a25:ef43:0:0:0:0:0 with SMTP id w3csp262976ybm; Tue, 26 May 2020 16:19:18 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzK2fjcJsrlpFcCOmFILL6ybZzhZGDOO4C2HRacx78gGRrbpSvG9otMbKWTbEqcsjVtyRlb X-Received: by 2002:a05:6402:17ba:: with SMTP id j26mr9470475edy.324.1590535158239; Tue, 26 May 2020 16:19:18 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1590535158; cv=none; d=google.com; s=arc-20160816; b=R+Ue8wpUSHR2YCA2UNhXvZdaqKWf1iq6dDfEGczZIdmiN4FD8+OyuLPbr0+qvPa6c4 zhTcMZ1j2uuckqbSGfBiDjLFC8upDeZolXzRkx83kdk4+aVAd9Fni1qgWFjKvwkUzG/H HU7EYFQz/ClRxKCY0+ph1vnhdMxtDYYcf5iEEvbT7RaiOek3hAi8Ss/VffRn/P8/iu5W EfPnJ1sz+ujEO3NpRYulGq6mtYEcAIj8OLFHfbYuRepNp+FjaNnabTTxc8rarJRmwA5X ESz8dlaRQphixLOzRjLRfY0gqW0BTNGEOJsFyEm9Zk2RRKKxi/dv//SMOs4Kj3qGtUa8 j0uQ== 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=31C891w4mNZUMit4SyQgOyKSwMpVx5+b0vTMBoyLaLo=; b=xhIGbI3VjA19BgZzKy11pmDUnCThm645wxHxkLXq0VCM+ZuvYVi8NeEryjxVZCziKU +9uP32Tf24jymzzfABfLUmYEG6wDXG3tkr8AyXtKt5urhMzGkzNiaxNFmXbiWQtsvwrA cxX/a0Efr6OqIqHMwV9/q440eAqvNGrtI20aOGKnoTfsXYBE6UY57fQYwvT7cARvOQF2 O9yPbkvA8hWGT04KYw701VOhP01YQE3aRw5FszMotNWvFNA2UvhCAnPSYjkIziX+3KnT Dfp0Pz20Fn2TQeA9JRN33wnP9LWkAhsSnL3VHkTEjngWNqZrF0jgbhG5bjSiQKXFz1Va yr8Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=CvlQ6way; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id s14si711364eja.586.2020.05.26.16.18.54; Tue, 26 May 2020 16:19:18 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=CvlQ6way; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2392486AbgEZT0G (ORCPT + 99 others); Tue, 26 May 2020 15:26:06 -0400 Received: from mail.kernel.org ([198.145.29.99]:34526 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2391157AbgEZTGT (ORCPT ); Tue, 26 May 2020 15:06:19 -0400 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 35D0F208A7; Tue, 26 May 2020 19:06:18 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1590519978; bh=ImNrQVFyGcuFtsDbQJO2dtMOMD8uOcGpMlubp2ca/Mw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=CvlQ6wayo/+p1elzHHKmbHP2NZEVXbMZtTGmgvRFHlugwQr6Tt3UrxEbS5GspYT5U 4ozPOSktgqAaDcznGbDsnaRCdZzt6BjaJu8O6JxnC9+piJsAqTKaE03nmIY9Cri2Dz yjFDUH9mGmBEj3K/QIcQb1G4AlM1/VFpbdj2Y1BA= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Alain Volmat , Jarkko Nikula , Wolfram Sang , Sasha Levin Subject: [PATCH 5.4 011/111] i2c: fix missing pm_runtime_put_sync in i2c_device_probe Date: Tue, 26 May 2020 20:52:29 +0200 Message-Id: <20200526183933.620974645@linuxfoundation.org> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200526183932.245016380@linuxfoundation.org> References: <20200526183932.245016380@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: Alain Volmat [ Upstream commit 3c3dd56f760da056e821ac177e3ad0de4209a435 ] In case of the I2C client exposes the flag I2C_CLIENT_HOST_NOTIFY, pm_runtime_get_sync is called in order to always keep active the adapter. However later on, pm_runtime_put_sync is never called within the function in case of an error. This commit add this error handling. Fixes: 72bfcee11cf8 ("i2c: Prevent runtime suspend of adapter when Host Notify is required") Signed-off-by: Alain Volmat Reviewed-by: Jarkko Nikula Signed-off-by: Wolfram Sang Signed-off-by: Sasha Levin --- drivers/i2c/i2c-core-base.c | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/drivers/i2c/i2c-core-base.c b/drivers/i2c/i2c-core-base.c index 810a942eaa8e..cc193f2ba5d3 100644 --- a/drivers/i2c/i2c-core-base.c +++ b/drivers/i2c/i2c-core-base.c @@ -338,8 +338,10 @@ static int i2c_device_probe(struct device *dev) } else if (ACPI_COMPANION(dev)) { irq = i2c_acpi_get_irq(client); } - if (irq == -EPROBE_DEFER) - return irq; + if (irq == -EPROBE_DEFER) { + status = irq; + goto put_sync_adapter; + } if (irq < 0) irq = 0; @@ -353,15 +355,19 @@ static int i2c_device_probe(struct device *dev) */ if (!driver->id_table && !i2c_acpi_match_device(dev->driver->acpi_match_table, client) && - !i2c_of_match_device(dev->driver->of_match_table, client)) - return -ENODEV; + !i2c_of_match_device(dev->driver->of_match_table, client)) { + status = -ENODEV; + goto put_sync_adapter; + } if (client->flags & I2C_CLIENT_WAKE) { int wakeirq; wakeirq = of_irq_get_byname(dev->of_node, "wakeup"); - if (wakeirq == -EPROBE_DEFER) - return wakeirq; + if (wakeirq == -EPROBE_DEFER) { + status = wakeirq; + goto put_sync_adapter; + } device_init_wakeup(&client->dev, true); @@ -408,6 +414,10 @@ err_detach_pm_domain: err_clear_wakeup_irq: dev_pm_clear_wake_irq(&client->dev); device_init_wakeup(&client->dev, false); +put_sync_adapter: + if (client->flags & I2C_CLIENT_HOST_NOTIFY) + pm_runtime_put_sync(&client->adapter->dev); + return status; } -- 2.25.1