kernel_optimize_test/drivers/rtc
Martin Fuzzey a6f7bf2652 rtc: stm32: Fix unbalanced clk_disable_unprepare() on probe error path
commit 950ac33dbe6ff656a623d862022f0762ec061ba7 upstream.

The STM32MP1 RTC may have 2 clocks, the pclk and the rtc_ck.

If clk_prepare_enable() fails for the second clock (rtc_ck) we must only
call clk_disable_unprepare() for the first clock (pclk) but currently we
call it on both leading to a WARN:

[   15.629568] WARNING: CPU: 0 PID: 146 at drivers/clk/clk.c:958 clk_core_disable+0xb0/0xc8
[   15.637620] ck_rtc already disabled
[   15.663322] CPU: 0 PID: 146 Comm: systemd-udevd Not tainted 5.4.77-pknbsp-svn5759-atag-v5.4.77-204-gea4235203137-dirty #2413
[   15.674510] Hardware name: STM32 (Device Tree Support)
[   15.679658] [<c0111148>] (unwind_backtrace) from [<c010c0b8>] (show_stack+0x10/0x14)
[   15.687371] [<c010c0b8>] (show_stack) from [<c0ab3d28>] (dump_stack+0xc0/0xe0)
[   15.694574] [<c0ab3d28>] (dump_stack) from [<c012360c>] (__warn+0xc8/0xf0)
[   15.701428] [<c012360c>] (__warn) from [<c0123694>] (warn_slowpath_fmt+0x60/0x94)
[   15.708894] [<c0123694>] (warn_slowpath_fmt) from [<c053b518>] (clk_core_disable+0xb0/0xc8)
[   15.717230] [<c053b518>] (clk_core_disable) from [<c053c190>] (clk_core_disable_lock+0x18/0x24)
[   15.725924] [<c053c190>] (clk_core_disable_lock) from [<bf0adc44>] (stm32_rtc_probe+0x124/0x5e4 [rtc_stm32])
[   15.735739] [<bf0adc44>] (stm32_rtc_probe [rtc_stm32]) from [<c05f7d4c>] (platform_drv_probe+0x48/0x98)
[   15.745095] [<c05f7d4c>] (platform_drv_probe) from [<c05f5cec>] (really_probe+0x1f0/0x458)
[   15.753338] [<c05f5cec>] (really_probe) from [<c05f61c4>] (driver_probe_device+0x70/0x1c4)
[   15.761584] [<c05f61c4>] (driver_probe_device) from [<c05f6580>] (device_driver_attach+0x58/0x60)
[   15.770439] [<c05f6580>] (device_driver_attach) from [<c05f6654>] (__driver_attach+0xcc/0x170)
[   15.779032] [<c05f6654>] (__driver_attach) from [<c05f40d8>] (bus_for_each_dev+0x58/0x7c)
[   15.787191] [<c05f40d8>] (bus_for_each_dev) from [<c05f4ffc>] (bus_add_driver+0xdc/0x1f8)
[   15.795352] [<c05f4ffc>] (bus_add_driver) from [<c05f6ed8>] (driver_register+0x7c/0x110)
[   15.803425] [<c05f6ed8>] (driver_register) from [<c01027bc>] (do_one_initcall+0x70/0x1b8)
[   15.811588] [<c01027bc>] (do_one_initcall) from [<c01a1094>] (do_init_module+0x58/0x1f8)
[   15.819660] [<c01a1094>] (do_init_module) from [<c01a0074>] (load_module+0x1e58/0x23c8)
[   15.827646] [<c01a0074>] (load_module) from [<c01a0860>] (sys_finit_module+0xa0/0xd4)
[   15.835459] [<c01a0860>] (sys_finit_module) from [<c01011e0>] (__sys_trace_return+0x0/0x20)

Signed-off-by: Martin Fuzzey <martin.fuzzey@flowbird.group>
Fixes: 4e64350f42 ("rtc: add STM32 RTC driver")
Cc: stable@vger.kernel.org
Reviewed-by: Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Link: https://lore.kernel.org/r/1623087421-19722-1-git-send-email-martin.fuzzey@flowbird.group
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2021-07-14 16:55:44 +02:00
..
class.c
dev.c
interface.c
Kconfig rtc: zynqmp: depend on HAS_IOMEM 2021-03-04 11:38:03 +01:00
lib.c
Makefile rtc: rv3032: Add a driver for Microcrystal RV-3032 2020-10-19 22:47:56 +02:00
nvmem.c
proc.c
rtc-88pm80x.c
rtc-88pm860x.c rtc: 88pm860x: remove useless range check 2020-04-18 22:42:06 +02:00
rtc-ab-b5ze-s3.c rtc: Replace HTTP links with HTTPS ones 2020-07-16 11:17:52 +02:00
rtc-ab-eoz9.c
rtc-ab3100.c
rtc-ab8500.c
rtc-abx80x.c rtc: abx80x: Provide debug feedback for invalid dt properties 2020-06-06 00:16:24 +02:00
rtc-ac100.c
rtc-armada38x.c
rtc-as3722.c
rtc-asm9260.c
rtc-aspeed.c
rtc-at91rm9200.c
rtc-at91sam9.c
rtc-au1xxx.c
rtc-bd70528.c
rtc-bq32k.c rtc: Replace HTTP links with HTTPS ones 2020-07-16 11:17:52 +02:00
rtc-bq4802.c
rtc-brcmstb-waketimer.c
rtc-cadence.c
rtc-cmos.c rtc: cmos: zero-init wkalrm when reading from CMOS 2020-08-21 00:10:33 +02:00
rtc-coh901331.c
rtc-core.h
rtc-cpcap.c rtc: cpcap: fix range 2020-07-02 22:32:00 +02:00
rtc-cros-ec.c
rtc-da9052.c
rtc-da9055.c
rtc-da9063.c
rtc-davinci.c
rtc-digicolor.c
rtc-dm355evm.c
rtc-ds1216.c
rtc-ds1286.c
rtc-ds1302.c
rtc-ds1305.c
rtc-ds1307.c rtc: ds1307: Fix wday settings for rx8130 2021-05-19 10:13:05 +02:00
rtc-ds1343.c
rtc-ds1347.c
rtc-ds1374.c rtc: ds1374: remove unused define 2020-07-21 09:56:46 +02:00
rtc-ds1390.c
rtc-ds1511.c
rtc-ds1553.c
rtc-ds1672.c
rtc-ds1685.c rtc: ds1685: Fix bank switching to avoid endless loop 2020-09-15 11:24:29 +02:00
rtc-ds1742.c
rtc-ds2404.c
rtc-ds3232.c
rtc-efi.c
rtc-em3027.c
rtc-ep93xx.c rtc: ep93xx: Fix NULL pointer dereference in ep93xx_rtc_read_time 2020-12-30 11:54:29 +01:00
rtc-fm3130.c
rtc-fsl-ftm-alarm.c rtc: fsl-ftm-alarm: add MODULE_TABLE() 2021-05-19 10:13:03 +02:00
rtc-ftrtc010.c
rtc-generic.c
rtc-goldfish.c rtc: goldfish: Enable interrupt in set_alarm() when necessary 2020-07-16 11:15:43 +02:00
rtc-hid-sensor-time.c
rtc-hym8563.c
rtc-imx-sc.c
rtc-imxdi.c rtc: imxdi: fix trivial typos 2020-07-02 22:32:01 +02:00
rtc-isl1208.c
rtc-isl12022.c
rtc-isl12026.c
rtc-jz4740.c rtc: ingenic: Reset regulator register in probe 2020-05-11 16:35:05 +02:00
rtc-lp8788.c
rtc-lpc24xx.c
rtc-lpc32xx.c
rtc-ls1x.c
rtc-m41t80.c treewide: Use fallthrough pseudo-keyword 2020-08-23 17:36:59 -05:00
rtc-m41t93.c
rtc-m41t94.c
rtc-m48t35.c
rtc-m48t59.c
rtc-m48t86.c
rtc-max6900.c
rtc-max6902.c
rtc-max6916.c
rtc-max8907.c
rtc-max8925.c
rtc-max8997.c
rtc-max8998.c
rtc-max77686.c rtc: max77686: Fix wake-ups for max77620 2020-08-07 23:29:47 +02:00
rtc-mc13xxx.c rtc: mc13xxx: fix a double-unlock issue 2020-05-11 16:21:50 +02:00
rtc-mc146818-lib.c
rtc-mcp795.c rtc: Replace HTTP links with HTTPS ones 2020-07-16 11:17:52 +02:00
rtc-meson-vrtc.c rtc: meson: simplify the return expression of meson_vrtc_probe 2020-09-29 22:19:15 +02:00
rtc-meson.c
rtc-moxart.c
rtc-mpc5121.c rtc: mpc5121: Use correct return value for mpc5121_rtc_probe() 2020-05-30 04:12:38 +02:00
rtc-mrst.c
rtc-msm6242.c
rtc-mt2712.c rtc: mt2712: switch to devm_platform_ioremap_resource 2020-04-18 22:42:04 +02:00
rtc-mt6397.c rtc: mt6397: Remove unused member dev 2020-10-15 12:01:29 +02:00
rtc-mt7622.c
rtc-mv.c
rtc-mxc_v2.c
rtc-mxc.c
rtc-omap.c
rtc-opal.c
rtc-palmas.c
rtc-pcap.c
rtc-pcf2123.c
rtc-pcf2127.c rtc: pcf2127: only use watchdog when explicitly available 2021-01-09 13:46:22 +01:00
rtc-pcf8523.c treewide: Use fallthrough pseudo-keyword 2020-08-23 17:36:59 -05:00
rtc-pcf8563.c
rtc-pcf8583.c
rtc-pcf50633.c
rtc-pcf85063.c rtc: pcf85063: fallback to parent of_node 2021-05-26 12:06:57 +02:00
rtc-pcf85363.c
rtc-pic32.c
rtc-pl030.c
rtc-pl031.c rtc: pl031: fix resource leak in pl031_probe 2021-01-06 14:56:53 +01:00
rtc-pm8xxx.c
rtc-ps3.c
rtc-pxa.c
rtc-r7301.c
rtc-r9701.c rtc: r9701: set range 2020-10-19 22:48:55 +02:00
rtc-rc5t583.c
rtc-rc5t619.c rtc: rc5t619: Fix an ERR_PTR vs NULL check 2020-04-15 09:58:24 +02:00
rtc-rk808.c
rtc-rp5c01.c
rtc-rs5c313.c rtc: rtc-rs5c313: Convert to module_platform_driver() 2020-08-21 00:13:44 +02:00
rtc-rs5c348.c
rtc-rs5c372.c
rtc-rtd119x.c
rtc-rv3028.c rtc: rv3028: ensure ram configuration registers are saved 2020-10-15 12:09:35 +02:00
rtc-rv3029c2.c
rtc-rv3032.c rtc: rv3032: Add a driver for Microcrystal RV-3032 2020-10-19 22:47:56 +02:00
rtc-rv8803.c rtc: rv8803: simplify the return expression of rv8803_nvram_write 2020-09-29 22:20:10 +02:00
rtc-rx4581.c
rtc-rx6110.c
rtc-rx8010.c rtc: rx8010: rename rx8010_init_client() to rx8010_init() 2020-09-29 22:18:10 +02:00
rtc-rx8025.c
rtc-rx8581.c
rtc-s3c.c rtc: s3c: Simplify with dev_err_probe() 2020-09-15 10:42:36 +02:00
rtc-s3c.h
rtc-s5m.c
rtc-s35390a.c
rtc-sa1100.c
rtc-sa1100.h
rtc-sc27xx.c
rtc-sd3078.c
rtc-sh.c
rtc-sirfsoc.c
rtc-snvs.c rtc: snvs: Add necessary clock operations for RTC APIs 2020-05-30 03:17:48 +02:00
rtc-spear.c
rtc-st-lpc.c rtc: st-lpc: Constify st_rtc_ops 2020-09-15 11:21:50 +02:00
rtc-starfire.c
rtc-stk17ta8.c
rtc-stm32.c rtc: stm32: Fix unbalanced clk_disable_unprepare() on probe error path 2021-07-14 16:55:44 +02:00
rtc-stmp3xxx.c treewide: Use fallthrough pseudo-keyword 2020-08-23 17:36:59 -05:00
rtc-sun4v.c
rtc-sun6i.c rtc: sun6i: Fix memleak in sun6i_rtc_clk_init 2021-01-06 14:56:53 +01:00
rtc-sunxi.c
rtc-tegra.c
rtc-test.c
rtc-tps6586x.c
rtc-tps65910.c
rtc-tps80031.c
rtc-twl.c
rtc-tx4939.c
rtc-v3020.c
rtc-vr41xx.c
rtc-vt8500.c
rtc-wilco-ec.c
rtc-wm831x.c
rtc-wm8350.c
rtc-x1205.c
rtc-xgene.c
rtc-zynqmp.c
sysfs.c
systohc.c