From nobody Tue Sep 29 04:43:03 2026 Received: from mail-pg1-f171.google.com (mail-pg1-f171.google.com [209.85.215.171]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1C091419FBB for ; Wed, 12 Aug 2026 09:46:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.215.171 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786528005; cv=none; b=gE97JSeDZ8xDxdWhF9X3bXH65Xqdp1xlsnGf7PmdgW8ve8fQmZo5V20ILIB3CStLtbSSTVeEw3ppzbk+8DBhqUuAxLvbDMkDIbAerAe6NdQOlS/JqMl300Z34IDc7QjKn4Ybv72S6Lj+jUCWWHjXHhA3FlE7yigY3TJj0PyR7NY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786528005; c=relaxed/simple; bh=fmRq3OUJCI0HOwd9Tp5He8EsVLoZ/GIvCjkdw7TRQcE=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=i07p7o1i2lxvxGNd7zkcHmTPtC8BL7XfFyeqQNQ7wSMexMX7onCVagcPXDi550cAzjLsDEt5s4p6iYnsAGRBzX8zT/pl6Dkbvui7hwF88Gaz5aafq78szh4mC2IvSolQvi5nysblprJkaZKkD16uhnzNHzrW4AbWnwYSlUdvKYI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=gE9NLlsI; arc=none smtp.client-ip=209.85.215.171 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="gE9NLlsI" Received: by mail-pg1-f171.google.com with SMTP id 41be03b00d2f7-ca766c1c9ccso523598a12.0 for ; Wed, 12 Aug 2026 02:46:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1786528002; x=1787132802; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to:content-type; bh=lzbbraV1K3+6Tojc98ovuLlmriNG0/xql/GJKFiqTC8=; b=gE9NLlsITE48tTR1mnGp+xuYiOhAy8Gdl2rRcgKUVPh3CK6ANOpOr4Mc/mM80iSfyo FQzK98bZBGKQrn6kaMAao0n9m7LnNJigr+hbuNm/m0oYcvy3GkbBeF4YvBQgSriUpMQM OVbVIckkqNeO+K02lqF54AdqC3LHOYtig0r8h7WzyJedpPXbkZP8A/e7ezHEmIwe51qi yOSNSMxJ3ILPqYkhsLbNbDIxQ3za9O7WJecoonMzjiByP1QBiJcmRawtk+Fxu+JZ9fGr dgOPt+K1aYIKZCDrzB1jFp8aST7lXKT9qYeHHs8UsXKOzB714tvt2f6r9yeA+n2qU6Iu Mqyw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786528002; x=1787132802; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to:content-type; bh=lzbbraV1K3+6Tojc98ovuLlmriNG0/xql/GJKFiqTC8=; b=P0qldLVVKEvJuc0E01io1Buj29E4x4JC/qaCVJNkifLjz6qY8LBUdLDIKrZJai4jCX Ae7ZaazwioR9SmM+aNsP9Y1MO3m4sOKrdIrPUIEiJxMYA2wL5j4fwWz5EyNz+E2AnqeP su4RcwC0H9dmnzDl1uqVG5ocjsxo3CXrL3PFHjG49kW9ROv339MRMjiL0MY4IUEklmpP d/XAfYlYFwzXgHyUKqJkxDzal4qXmz8dZeNEUef4bTJS/BljfSepYFgnXxbtvHrXSAUR 3pYZ2s2D4FpIoXSVxmIiSeYJLFgAMaq7k8WWkKO833HpCG7/gq1VJo0OJHBEXcPnf6YO 0z6Q== X-Forwarded-Encrypted: i=1; AHgh+RqGvfQJrJg0cFSnLTinY8SdxQAJLCfQ4eTWUx2zwgKhGZMz8n+SQmIzG3XiMkxfdFYTkuL0oct2yLEnZW8=@vger.kernel.org X-Gm-Message-State: AOJu0Yxa9LdHPAslwe62u/Y7q8imfjdFz+kZAAec2b8Q1gHdqCZUzlUU uR755UNe+KCAcUQmatHf1AlqxDyM9uAAY/OMPtYJI7bqKukLySx9o1AS X-Gm-Gg: AR+sD11Eg1dLToCQ8nb6lYmOrvDa0PCtThxmPqi/pMxVbjA0JSAR574WP2BRmxq5wv8 NPz9C7C4ZjdRJqYqlrRriK5d+G2uPKRWSQFjqXvleWgXjOVMtHNL2UVQZQImu8HQj2uA26N4DKw qdANQnFkicxM0XOS6LCd7/ZaPqZD9fO8ra9pDEVRyaTj0CHkVpRJ/wDXx571auVFHBeFvwYo2Ma MlR+fd0dGEnN8B/2oEimIvULgvEZlUDVTWmdCPqCshE4JpRHBG5q+dXUc9GnN6gN8fbjCMx4TKM Etoi+4pMNsSXG5sESoS0nvyiOBnw4Olem+Q+b7Z3rnFHxxmEeZzbs8jNgSr2i9PNYyVlN3nfhxv J2GaKef1/g3P+khB3rUQ5nGTxB/noHQ3ejbC2KCuSDsorBRXh0aYUACqlFFwk+5uGAATnkrMhJ3 b1T9Q9lDoPMa73zo0szTGRVqTqd30agt1vHWNSOQVFV+E= X-Received: by 2002:a05:6a00:4089:b0:848:2ae4:d2ba with SMTP id d2e1a72fcca58-84fb555d354mr4174309b3a.28.1786528002311; Wed, 12 Aug 2026 02:46:42 -0700 (PDT) Received: from lgs.. ([2001:250:5800:1000::f280]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-cbee797c4b0sm424557a12.1.2026.08.12.02.46.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 12 Aug 2026 02:46:41 -0700 (PDT) From: Guangshuo Li To: Loic Poulain , Robert Foss , Andi Shyti , Todor Tomov , Wolfram Sang , Vinod Koul , Bjorn Andersson , linux-i2c@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Guangshuo Li , stable@vger.kernel.org Subject: [PATCH] i2c: qcom-cci: fix autosuspend cleanup Date: Wed, 12 Aug 2026 17:44:25 +0800 Message-ID: <20260812094425.3515179-1-lgs201920130244@gmail.com> X-Mailer: git-send-email 2.43.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" cci_probe() calls pm_runtime_use_autosuspend(), but the remove path does not call the matching pm_runtime_dont_use_autosuspend() before disabling runtime PM. If the autosuspend delay is set to a negative value while autosuspend is enabled, the runtime PM core increments usage_count to prevent runtime suspend. Without undoing the autosuspend setting during teardown, this reference is not dropped and usage_count remains unbalanced. Use devm_pm_runtime_set_active_enabled() to manage the runtime PM state. Its managed cleanup disables autosuspend and runtime PM and restores the suspended state on probe failure and driver removal. Remove the now redundant manual runtime PM cleanup. This issue was found by manual code inspection. Fixes: e517526195de ("i2c: Add Qualcomm CCI I2C driver") Cc: stable@vger.kernel.org Signed-off-by: Guangshuo Li Reviewed-by: Loic Poulain Reviewed-by: Vladimir Zapolskiy --- drivers/i2c/busses/i2c-qcom-cci.c | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/drivers/i2c/busses/i2c-qcom-cci.c b/drivers/i2c/busses/i2c-qco= m-cci.c index bdeda3979c48..25b6e4e9e3fa 100644 --- a/drivers/i2c/busses/i2c-qcom-cci.c +++ b/drivers/i2c/busses/i2c-qcom-cci.c @@ -595,9 +595,11 @@ static int cci_probe(struct platform_device *pdev) goto disable_clocks; =20 pm_runtime_set_autosuspend_delay(dev, MSEC_PER_SEC); + ret =3D devm_pm_runtime_set_active_enabled(dev); + if (ret) + goto disable_clocks; + pm_runtime_use_autosuspend(dev); - pm_runtime_set_active(dev); - pm_runtime_enable(dev); =20 for (i =3D 0; i < cci->data->num_masters; i++) { if (!cci->master[i].cci) @@ -613,8 +615,6 @@ static int cci_probe(struct platform_device *pdev) return 0; =20 error_i2c: - pm_runtime_disable(dev); - pm_runtime_dont_use_autosuspend(dev); =20 for (--i ; i >=3D 0; i--) { if (cci->master[i].cci) { @@ -640,9 +640,6 @@ static void cci_remove(struct platform_device *pdev) cci_halt(cci, i); } } - - pm_runtime_disable(&pdev->dev); - pm_runtime_set_suspended(&pdev->dev); } =20 static const struct cci_data cci_v1_data =3D { --=20 2.43.0