From: Sasha Levin <sashal@kernel.org>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org
Cc: Stephen Boyd <sboyd@kernel.org>,
Douglas Anderson <dianders@chromium.org>,
Sasha Levin <sashal@kernel.org>,
mturquette@baylibre.com, linux-clk@vger.kernel.org
Subject: [PATCH AUTOSEL 6.8 08/18] clk: Don't hold prepare_lock when calling kref_put()
Date: Tue, 23 Apr 2024 07:01:04 -0400 [thread overview]
Message-ID: <20240423110118.1652940-8-sashal@kernel.org> (raw)
In-Reply-To: <20240423110118.1652940-1-sashal@kernel.org>
From: Stephen Boyd <sboyd@kernel.org>
[ Upstream commit 6f63af7511e7058f3fa4ad5b8102210741c9f947 ]
We don't need to hold the prepare_lock when dropping a ref on a struct
clk_core. The release function is only freeing memory and any code with
a pointer reference has already unlinked anything pointing to the
clk_core. This reduces the holding area of the prepare_lock a bit.
Note that we also don't call free_clk() with the prepare_lock held.
There isn't any reason to do that.
Reviewed-by: Douglas Anderson <dianders@chromium.org>
Signed-off-by: Stephen Boyd <sboyd@kernel.org>
Link: https://lore.kernel.org/r/20240325184204.745706-3-sboyd@kernel.org
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/clk/clk.c | 12 +++++-------
1 file changed, 5 insertions(+), 7 deletions(-)
diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c
index 20c4b28fed061..badb6fdf83a2a 100644
--- a/drivers/clk/clk.c
+++ b/drivers/clk/clk.c
@@ -4453,7 +4453,8 @@ void clk_unregister(struct clk *clk)
if (ops == &clk_nodrv_ops) {
pr_err("%s: unregistered clock: %s\n", __func__,
clk->core->name);
- goto unlock;
+ clk_prepare_unlock();
+ return;
}
/*
* Assign empty clock ops for consumers that might still hold
@@ -4487,11 +4488,10 @@ void clk_unregister(struct clk *clk)
if (clk->core->protect_count)
pr_warn("%s: unregistering protected clock: %s\n",
__func__, clk->core->name);
+ clk_prepare_unlock();
kref_put(&clk->core->ref, __clk_release);
free_clk(clk);
-unlock:
- clk_prepare_unlock();
}
EXPORT_SYMBOL_GPL(clk_unregister);
@@ -4650,13 +4650,11 @@ void __clk_put(struct clk *clk)
if (clk->min_rate > 0 || clk->max_rate < ULONG_MAX)
clk_set_rate_range_nolock(clk, 0, ULONG_MAX);
- owner = clk->core->owner;
- kref_put(&clk->core->ref, __clk_release);
-
clk_prepare_unlock();
+ owner = clk->core->owner;
+ kref_put(&clk->core->ref, __clk_release);
module_put(owner);
-
free_clk(clk);
}
--
2.43.0
next prev parent reply other threads:[~2024-04-23 11:40 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-04-23 11:00 [PATCH AUTOSEL 6.8 01/18] fs/9p: only translate RWX permissions for plain 9P2000 Sasha Levin
2024-04-23 11:00 ` [PATCH AUTOSEL 6.8 02/18] fs/9p: translate O_TRUNC into OTRUNC Sasha Levin
2024-04-23 11:00 ` [PATCH AUTOSEL 6.8 03/18] fs/9p: fix the cache always being enabled on files with qid flags Sasha Levin
2024-04-23 11:01 ` [PATCH AUTOSEL 6.8 04/18] 9p: explicitly deny setlease attempts Sasha Levin
2024-04-23 11:01 ` [PATCH AUTOSEL 6.8 05/18] powerpc/crypto/chacha-p10: Fix failure on non Power10 Sasha Levin
2024-04-23 11:01 ` Sasha Levin
2024-04-23 11:01 ` [PATCH AUTOSEL 6.8 06/18] gpio: wcove: Use -ENOTSUPP consistently Sasha Levin
2024-04-23 11:01 ` [PATCH AUTOSEL 6.8 07/18] gpio: crystalcove: " Sasha Levin
2024-04-23 11:01 ` Sasha Levin [this message]
2024-04-23 11:01 ` [PATCH AUTOSEL 6.8 09/18] fs/9p: remove erroneous nlink init from legacy stat2inode Sasha Levin
2024-04-23 11:01 ` [PATCH AUTOSEL 6.8 10/18] fs/9p: drop inodes immediately on non-.L too Sasha Levin
2024-04-23 11:01 ` [PATCH AUTOSEL 6.8 11/18] gpio: lpc32xx: fix module autoloading Sasha Levin
2024-04-23 11:01 ` Sasha Levin
2024-04-23 11:01 ` [PATCH AUTOSEL 6.8 12/18] drm/nouveau/dp: Don't probe eDP ports twice harder Sasha Levin
2024-04-23 11:01 ` [PATCH AUTOSEL 6.8 13/18] platform/x86/amd: pmf: Decrease error message to debug Sasha Levin
2024-04-23 11:01 ` [PATCH AUTOSEL 6.8 14/18] platform/x86: ISST: Add Granite Rapids-D to HPM CPU list Sasha Levin
2024-04-23 11:01 ` [PATCH AUTOSEL 6.8 15/18] platform/x86/amd/pmc: Extend Framework 13 quirk to more BIOSes Sasha Levin
2024-04-23 11:01 ` [PATCH AUTOSEL 6.8 16/18] drm/radeon: silence UBSAN warning (v3) Sasha Levin
2024-04-23 11:01 ` [PATCH AUTOSEL 6.8 17/18] net:usb:qmi_wwan: support Rolling modules Sasha Levin
2024-04-23 11:01 ` [PATCH AUTOSEL 6.8 18/18] blk-iocost: do not WARN if iocg was already offlined Sasha Levin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240423110118.1652940-8-sashal@kernel.org \
--to=sashal@kernel.org \
--cc=dianders@chromium.org \
--cc=linux-clk@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mturquette@baylibre.com \
--cc=sboyd@kernel.org \
--cc=stable@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.