FAILED: patch "[PATCH] pwm: mediatek: Ensure to disable clocks in error path" failed to apply to 5.15-stable tree
Subsystems (2)
[email protected]
maintainerThe patch below does not apply to the 5.15-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
To reproduce the conflict and resubmit, you may use the following commands:
git fetch https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/ linux-5.15.y
git checkout FETCH_HEAD
git cherry-pick -x 505b730ede7f5c4083ff212aa955155b5b92e574
# <resolve conflicts, build, test, etc.>
git commit -s
git send-email --to '<[email protected]>' --in-reply-to '2025071235-ebook-definite-e54a@gregkh' --subject-prefix 'PATCH 5.15.y' HEAD^..
Possible dependencies:
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From 505b730ede7f5c4083ff212aa955155b5b92e574 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Uwe=20Kleine-K=C3=B6nig?= <[email protected]>
Date: Fri, 4 Jul 2025 19:27:27 +0200
Subject: [PATCH] pwm: mediatek: Ensure to disable clocks in error path
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
After enabling the clocks each error path must disable the clocks again. One of them failed to do so. Unify the error paths to use goto to make it harder for future changes to add a similar bug.
drivers/pwm/pwm-mediatek.c +8 -5
@@ -130,8 +130,10 @@ static int pwm_mediatek_config(struct pwm_chip *chip, struct pwm_device *pwm,return ret; clk_rate =clk_get_rate (pc->clk_pwms[pwm->hwpwm]); -if (!clk_rate) -return -EINVAL ; +if (!clk_rate) { + ret = -EINVAL ; + goto out; + }/* Make sure we use the bus clock and not the 26MHz clock */ if (pc->soc->has_ck_26m_sel)
@@ -150,9 +152,9 @@ static int pwm_mediatek_config(struct pwm_chip *chip, struct pwm_device *pwm, }if (clkdiv >PWM_CLK_DIV_MAX ) { -pwm_mediatek_clk_disable (chip, pwm);dev_err (pwmchip_parent (chip),"period of %d ns not supported\n" , period_ns); -return -EINVAL ; + ret = -EINVAL ; + goto out; }if (pc->soc->pwm45_fixup && pwm->hwpwm >2 ) {
@@ -169,9 +171,10 @@ static int pwm_mediatek_config(struct pwm_chip *chip, struct pwm_device *pwm,pwm_mediatek_writel (pc, pwm->hwpwm, reg_width, cnt_period);pwm_mediatek_writel (pc, pwm->hwpwm, reg_thres, cnt_duty); +out:pwm_mediatek_clk_disable (chip, pwm); -return 0 ; +return ret; }static int pwm_mediatek_enable (struct pwm_chip *chip,struct pwm_device *pwm)
PATCH 1/1 pwm: mediatek: Ensure to disable clocks in error path
commit 505b730ede7f5c4083ff212aa955155b5b92e574 upstream.
After enabling the clocks each error path must disable the clocks again. One of them failed to do so. Unify the error paths to use goto to make it harder for future changes to add a similar bug.
--- drivers/pwm/pwm-mediatek.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-)
drivers/pwm/pwm-mediatek.c +9 -6
@@ -129,8 +129,10 @@ static int pwm_mediatek_config(struct pwm_chip *chip, struct pwm_device *pwm,return ret; clk_rate =clk_get_rate (pc->clk_pwms[pwm->hwpwm]); -if (!clk_rate) -return -EINVAL ; +if (!clk_rate) { + ret = -EINVAL ; + goto out; + }/* Make sure we use the bus clock and not the 26MHz clock */ if (pc->soc->has_ck_26m_sel)
@@ -149,9 +151,9 @@ static int pwm_mediatek_config(struct pwm_chip *chip, struct pwm_device *pwm, }if (clkdiv >PWM_CLK_DIV_MAX ) { -pwm_mediatek_clk_disable (chip, pwm); -dev_err (chip->dev,"period %d not supported\n" , period_ns); -return -EINVAL ; +dev_err (chip->dev,"period of %d ns not supported\n" , period_ns); + ret = -EINVAL ; + goto out; }if (pc->soc->pwm45_fixup && pwm->hwpwm >2 ) {
@@ -168,9 +170,10 @@ static int pwm_mediatek_config(struct pwm_chip *chip, struct pwm_device *pwm,pwm_mediatek_writel (pc, pwm->hwpwm, reg_width, cnt_period);pwm_mediatek_writel (pc, pwm->hwpwm, reg_thres, cnt_duty); +out:pwm_mediatek_clk_disable (chip, pwm); -return 0 ; +return ret; }static int pwm_mediatek_enable (struct pwm_chip *chip,struct pwm_device *pwm)
base-commit: 2f693b60754599cbe248b385e7bf939c72f3e30e
Signature · 1 line
2.50.0
Sasha Levin
maintainerRe: [PATCH 5.15.y] pwm: mediatek: Ensure to disable clocks in error path
[ Sasha's backport helper bot ]
Hi,
✅ All tests passed successfully. No issues detected. No action required from the submitter.
The upstream commit SHA1 provided is correct: 505b730ede7f5c4083ff212aa955155b5b92e574
Status in newer kernel trees:
6.15.y | Present (different SHA1: c4ffbbd8e366) 6.12.y | Present (different SHA1: dd878f5a5d0d) 6.6.y | Not found
6.1.y | Not found
Note: The patch differs from the upstream commit:
---
1: 505b730ede7f5 ! 1: 06f8584381eb0 pwm: mediatek: Ensure to disable clocks in error path
@@ Metadata
## Commit message ##
pwm: mediatek: Ensure to disable clocks in error path
+ commit 505b730ede7f5c4083ff212aa955155b5b92e574 upstream.
+
After enabling the clocks each error path must disable the clocks again. One of them failed to do so. Unify the error paths to use goto to make it harder for future changes to add a similar bug.
@@ Commit message
+ [ukleinek: backported to 5.15.y]
+ Signed-off-by: Uwe Kleine-König <[email protected]>
## drivers/pwm/pwm-mediatek.c ##
@@ drivers/pwm/pwm-mediatek.c: static int pwm_mediatek_config(struct pwm_chip *chip, struct pwm_device *pwm,
@@ drivers/pwm/pwm-mediatek.c: static int pwm_mediatek_config(struct pwm_chip *chip
if (clkdiv > PWM_CLK_DIV_MAX) {
- pwm_mediatek_clk_disable(chip, pwm);
- dev_err(pwmchip_parent(chip), "period of %d ns not supported\n", period_ns);
+- dev_err(chip->dev, "period %d not supported\n", period_ns);
- return -EINVAL;
++ dev_err(chip->dev, "period of %d ns not supported\n", period_ns);
+ ret = -EINVAL;
+ goto out;
}
---
Results of testing on various branches:
| Branch | Patch Apply | Build Test | |---------------------------|-------------|------------| | stable/linux-5.15.y | Success | Success |