From: Greg Kroah-Hartman Date: Sun, 13 Jul 2025 14:52:19 +0000 (+0200) Subject: 5.10-stable patches X-Git-Tag: v5.15.188~28 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=84f18609034339b721ae57854cf4444275435339;p=thirdparty%2Fkernel%2Fstable-queue.git 5.10-stable patches added patches: pwm-mediatek-ensure-to-disable-clocks-in-error-path.patch --- diff --git a/queue-5.10/pwm-mediatek-ensure-to-disable-clocks-in-error-path.patch b/queue-5.10/pwm-mediatek-ensure-to-disable-clocks-in-error-path.patch new file mode 100644 index 0000000000..79bd69470f --- /dev/null +++ b/queue-5.10/pwm-mediatek-ensure-to-disable-clocks-in-error-path.patch @@ -0,0 +1,67 @@ +From 505b730ede7f5c4083ff212aa955155b5b92e574 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Uwe=20Kleine-K=C3=B6nig?= +Date: Fri, 4 Jul 2025 19:27:27 +0200 +Subject: pwm: mediatek: Ensure to disable clocks in error path +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +From: Uwe Kleine-König + +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. + +Fixes: 7ca59947b5fc ("pwm: mediatek: Prevent divide-by-zero in pwm_mediatek_config()") +Signed-off-by: Uwe Kleine-König +Link: https://lore.kernel.org/r/20250704172728.626815-2-u.kleine-koenig@baylibre.com +Cc: stable@vger.kernel.org +[ukleinek: backported to 5.15.y] +Signed-off-by: Uwe Kleine-König +Signed-off-by: Greg Kroah-Hartman +--- + drivers/pwm/pwm-mediatek.c | 15 +++++++++------ + 1 file changed, 9 insertions(+), 6 deletions(-) + +--- a/drivers/pwm/pwm-mediatek.c ++++ b/drivers/pwm/pwm-mediatek.c +@@ -135,8 +135,10 @@ static int pwm_mediatek_config(struct pw + 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) +@@ -155,9 +157,9 @@ static int pwm_mediatek_config(struct pw + } + + 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) { +@@ -174,9 +176,10 @@ static int pwm_mediatek_config(struct pw + 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) diff --git a/queue-5.10/series b/queue-5.10/series index 75ee392a09..88e3819f2b 100644 --- a/queue-5.10/series +++ b/queue-5.10/series @@ -186,3 +186,4 @@ usb-gadget-u_serial-fix-race-condition-in-tty-wakeup.patch revert-acpi-battery-negate-current-when-discharging.patch ethernet-atl1-add-missing-dma-mapping-error-checks-a.patch rtc-lib_test-add-module_license.patch +pwm-mediatek-ensure-to-disable-clocks-in-error-path.patch