From nobody Sun Jun 14 07:41:59 2026 Received: from mail-pg1-f169.google.com (mail-pg1-f169.google.com [209.85.215.169]) (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 7D9ED33A71A for ; Fri, 1 May 2026 19:01:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.215.169 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777662066; cv=none; b=ObHNVvjbsNiri/IOSYMDHw+S3JWOD0cyLDT44xUXFat+Xk6ToiBmlLNwurSRZKutvLQfHReKyKTzBCw8Ej8aU4hLJ9aEcA3PV9ErnprBDlDXIqRr2axsFgNPT1Hph2/2pqsz3e4b/Ezs0/0utKVVrHjuTWapaVtxhxvFivvtaHk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777662066; c=relaxed/simple; bh=u4A2voPR3vsE1mHjlW6yzcsF8o55aX5VN17zQzTBQBo=; h=From:To:Cc:Subject:Date:Message-Id:MIME-Version; b=EKmJOiHF5c+d4WF3lKPLpfLGvjwVDAtgQ/8LkR6V3lribBbIWeSV/EyZHw0H8ThrriZ+uc2ktxPIN6lC9swUo9athYzZpz7Yq+9FpUS4p612Mz1HHOR9aA9rrTHKql5BSiNHLV+XHyxIbLYLBlvO9PjaS7aS0h1N5QiO1hlET6Q= 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=KCIoYpxR; arc=none smtp.client-ip=209.85.215.169 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="KCIoYpxR" Received: by mail-pg1-f169.google.com with SMTP id 41be03b00d2f7-c736261ee8dso831722a12.1 for ; Fri, 01 May 2026 12:01:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777662064; x=1778266864; 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; bh=oTnhLjm+3JWboEBKOT20RDnrgCD6r+pICX0KtRAwJkc=; b=KCIoYpxRXDKGEuao+wBf6rlkMASbPwrvClLbEQFFSi9pewFrgyoXX5ymISHlElbUjx xOW4JTM6uB2908BeP8R4nLbRpxzQACRIZpuyVj9o/0zbmYSBaxAf7vsVsqAnzLx1OhS/ iBbEEDP63GdVy2ndXId/aazcmx8gerFDRQZS3JRWTKT1093eyB/ByOI4GC2EejtZOw+S LTKxsuHhmQmvzMm+eXkXCdVSymENqEavdRHRVpFbrjRhWPJoIrWEpWWPw50jRyehPhMg yWBeKcHAsWgLWQgoD5HjD+FueJjYXGpFYSCpeb1XVyfxZzxtewkMEIe9mWd6oUlpiUP0 wccg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777662064; x=1778266864; 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; bh=oTnhLjm+3JWboEBKOT20RDnrgCD6r+pICX0KtRAwJkc=; b=CWgYX8oM0o40oQdj1WVy4Pycf9b6nQAjPWf6qdcU/37tsPPLY1JdrtoiWsqKhrD7wj r2SU2tcVakJD9rL2AVzEkIayWHFOTzbF0Omzn+QLqUBlK0QzCjzV+rgqFQkw7E6B9djI u9DX3ogBeGIiKJgIQK8/BgdIaeeCFVafjE3dKnAFqNBCZoP9CEpcNyJrdxKnmSmI5lQV Ga91r/7KxBvvypwu7BqAYAVcREcCxXGJHlfSMKQbMZwy88SNwpDoZjRT97bwJT4XCqTM ddrbk8yWGYsf3AJC0qYpl1pj8LGlzXWWKyl6ntm5Eo3yinfjArJPwoSmzj/tAQHHlFD8 3eJg== X-Forwarded-Encrypted: i=1; AFNElJ+f6KxQT3CEO55lotSIfRaef41+A5TH2+hGGK2h6fK1f7r+zAmQDauuycHameX9bJC7hm3ScA1ROxHnQc4=@vger.kernel.org X-Gm-Message-State: AOJu0YyIpju8/gRb53EDnlfK5+Lk0+VZbb1Tlky3DgE1cb8PE3M1vaYn U7wjfj3ooY9SOmyoPBCEQTClFIQwanee59Cxnuf/FLPmh2mea59Pd56M X-Gm-Gg: AeBDietA5b5pD4MWGwkAfbQ4x+XdgpuMrjXhME5q8ZSJYRbLj/WcNoaFCJhPMyOW3KP s0/pLYRxyD8DmJx6sWq8wFSaMCRZPwlR7aj7e1c1FM6xR43wrWHDF/++1l5sxPuJOfrBnFtFwPx e1tLoN0/Pw6nZOPDaVdwLbfKPvJmbNwxhNFUx347IqqksxnMgSz8WKjCaQsVG9iC6UAWpw9wQB/ yiru8J5YuQCsJOuulZ3Eg48M6LFNNnx/J8oBh+xxG7ZGAv0eX0jQ2i1w2nxQtTVdeJgNGBU+A0s Ck8z8c3A0LiBlk92lcGdsPboBGYW0G+S3xiUoygvl3qQws1LK242rsXN7j5dqwFGtodDwlV4AmO RLNgL/u5H3lVksKjKz91WJa8/Is9Z+Xiy6zpVWqImmaknwuEC8Ov9MT0v/yohM/5fhe31WqRqns 9lS0EG2oUi/ahkmpZnZCW/FMxlQGEjr0kmd/OENfPULojQdiBnRqnwPkBd6SVTSJU4061q77Rc X-Received: by 2002:a05:6a20:918a:b0:3a2:e0d3:37d1 with SMTP id adf61e73a8af0-3a7f1eb20dbmr261690637.41.1777662063723; Fri, 01 May 2026 12:01:03 -0700 (PDT) Received: from localhost.localdomain ([115.110.225.242]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c7ffbc6f063sm2734570a12.20.2026.05.01.12.01.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 01 May 2026 12:01:02 -0700 (PDT) From: Shitalkumar Gandhi X-Google-Original-From: Shitalkumar Gandhi To: Pavel Pisa , Ondrej Ille , Marc Kleine-Budde , Vincent Mailhol , linux-can@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Shitalkumar Gandhi Subject: [PATCH net-next] can: ctucanfd: use pm_runtime_resume_and_get() to balance reference count Date: Sat, 2 May 2026 00:30:05 +0530 Message-Id: <20260501190005.3342916-1-shitalkumar.gandhi@cambiumnetworks.com> X-Mailer: git-send-email 2.25.1 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" pm_runtime_get_sync() increments the runtime PM usage counter even when it returns an error code, which forces every caller to handle the error path by manually invoking pm_runtime_put_noidle(). In ctucanfd this is done in three places (ctucan_open(), ctucan_get_berr_counter() and ctucan_probe_common()), but the open-coded pattern is error-prone and needlessly verbose. pm_runtime_resume_and_get() was introduced specifically to solve this: on failure it drops the usage count itself, so the caller only has to return the error code. Convert all three call sites and adjust the matching error message strings. No functional change other than dropping the unbalanced pm_runtime_put_noidle() that was already paired with a failure path where the resume failed -- the new helper handles that internally. Signed-off-by: Shitalkumar Gandhi --- drivers/net/can/ctucanfd/ctucanfd_base.c | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/drivers/net/can/ctucanfd/ctucanfd_base.c b/drivers/net/can/ctu= canfd/ctucanfd_base.c index 0ea1ff28dfce..961c24494984 100644 --- a/drivers/net/can/ctucanfd/ctucanfd_base.c +++ b/drivers/net/can/ctucanfd/ctucanfd_base.c @@ -1202,11 +1202,10 @@ static int ctucan_open(struct net_device *ndev) struct ctucan_priv *priv =3D netdev_priv(ndev); int ret; =20 - ret =3D pm_runtime_get_sync(priv->dev); + ret =3D pm_runtime_resume_and_get(priv->dev); if (ret < 0) { - netdev_err(ndev, "%s: pm_runtime_get failed(%d)\n", + netdev_err(ndev, "%s: pm_runtime_resume_and_get failed(%d)\n", __func__, ret); - pm_runtime_put_noidle(priv->dev); return ret; } =20 @@ -1284,10 +1283,9 @@ static int ctucan_get_berr_counter(const struct net_= device *ndev, struct can_ber struct ctucan_priv *priv =3D netdev_priv(ndev); int ret; =20 - ret =3D pm_runtime_get_sync(priv->dev); + ret =3D pm_runtime_resume_and_get(priv->dev); if (ret < 0) { - netdev_err(ndev, "%s: pm_runtime_get failed(%d)\n", __func__, ret); - pm_runtime_put_noidle(priv->dev); + netdev_err(ndev, "%s: pm_runtime_resume_and_get failed(%d)\n", __func__,= ret); return ret; } =20 @@ -1401,11 +1399,10 @@ int ctucan_probe_common(struct device *dev, void __= iomem *addr, int irq, unsigne =20 if (pm_enable_call) pm_runtime_enable(dev); - ret =3D pm_runtime_get_sync(dev); + ret =3D pm_runtime_resume_and_get(dev); if (ret < 0) { - netdev_err(ndev, "%s: pm_runtime_get failed(%d)\n", + netdev_err(ndev, "%s: pm_runtime_resume_and_get failed(%d)\n", __func__, ret); - pm_runtime_put_noidle(priv->dev); goto err_pmdisable; } =20 --=20 2.25.1