linux/drivers/watchdog
Guenter Roeck 914d65f3f0 watchdog: Fix kref imbalance seen if handle_boot_enabled=0
If handle_boot_enabled is set to 0, the watchdog driver module use
counter will not be increased and kref_get() will not be called when
registering the watchdog. Subsequently, on open, this does not happen
either because the code believes that it was already done because the
hardware watchdog is marked as running.

We could introduce a state variable to indicate this state, but let's
just increase the module use counter and call kref_get() unconditionally
if the hardware watchdog is running when a driver is registering itself
to keep the code simple.

Fixes: 2501b01531 ("watchdog: core: add option to avoid early ...")
Cc: Sebastian Reichel <sebastian.reichel@collabora.co.uk>
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: Wim Van Sebroeck <wim@iguana.be>
2017-12-17 11:01:48 +01:00
..
acquirewdt.c
advantechwdt.c
alim1535_wdt.c
alim7101_wdt.c treewide: Switch DEFINE_TIMER callbacks to struct timer_list * 2017-11-21 15:57:05 -08:00
ar7_wdt.c
asm9260_wdt.c watchdog: asm9260_wdt: don't round closest with get_timeleft 2017-09-09 20:25:34 +02:00
aspeed_wdt.c watchdog: aspeed: Support configuration of external signal properties 2017-09-09 21:05:07 +02:00
at32ap700x_wdt.c
at91rm9200_wdt.c
at91sam9_wdt.c treewide: setup_timer() -> timer_setup() 2017-11-21 15:57:07 -08:00
at91sam9_wdt.h
ath79_wdt.c mips: separate extable.h, switch module.h to it 2016-10-05 18:36:18 -04:00
atlas7_wdt.c watchdog: constify watchdog_ops structures 2017-02-24 14:00:23 -08:00
bcm47xx_wdt.c treewide: setup_timer() -> timer_setup() 2017-11-21 15:57:07 -08:00
bcm63xx_wdt.c treewide: setup_timer() -> timer_setup() 2017-11-21 15:57:07 -08:00
bcm2835_wdt.c scripts/spelling.txt: add "partiton" pattern and fix typo instances 2017-02-27 18:43:46 -08:00
bcm7038_wdt.c watchdog: bcm7038: Check the return value from clk_prepare_enable() 2017-09-09 20:52:13 +02:00
bcm_kona_wdt.c watchdog: bcm281xx: Fix use of uninitialized spinlock. 2017-05-19 10:42:25 +02:00
bfin_wdt.c
booke_wdt.c watchdog: constify watchdog_ops structures 2017-02-24 14:00:23 -08:00
cadence_wdt.c watchdog: cadence_wdt: Show information when driver is probed 2017-09-09 20:35:31 +02:00
coh901327_wdt.c watchdog: coh901327_wdt: constify watchdog_ops structure 2017-09-09 20:06:38 +02:00
cpu5wdt.c treewide: setup_timer() -> timer_setup() 2017-11-21 15:57:07 -08:00
cpwd.c watchdog: cpwd: Convert timers to use timer_setup() 2017-11-02 15:50:26 -07:00
da9052_wdt.c watchdog: da9052_wdt: Convert to use device managed functions 2017-02-24 14:00:23 -08:00
da9055_wdt.c watchdog: da9055_wdt: Convert to use device managed functions 2017-02-24 14:00:23 -08:00
da9062_wdt.c watchdog: da9062_wdt: Convert to use device managed functions 2017-02-24 14:00:23 -08:00
da9063_wdt.c watchdog: da9063_wdt: Simplify by removing unneeded struct... 2017-09-09 20:55:26 +02:00
davinci_wdt.c watchdog: davinci: Add missing clk_disable_unprepare(). 2017-07-03 11:02:43 +02:00
diag288_wdt.c watchdog: constify watchdog_ops and watchdog_info structures 2017-09-09 20:29:53 +02:00
digicolor_wdt.c watchdog: constify watchdog_ops structures 2017-02-24 14:00:23 -08:00
dw_wdt.c watchdog: dw_wdt: get reset lines from dt 2017-07-03 10:52:04 +02:00
ebc-c384_wdt.c watchdog: ebc-c384_wdt: Utilize devm_ functions in driver probe callback 2017-02-24 14:00:23 -08:00
ep93xx_wdt.c watchdog: ep93xx_wdt: cleanup and let the core handle the heartbeat 2017-02-24 14:00:23 -08:00
eurotechwdt.c Annotate hardware config module parameters in drivers/watchdog/ 2017-04-20 12:02:32 +01:00
f71808e_wdt.c watchdog: f71808e_wdt: Add F71868 support 2017-06-05 20:43:01 +02:00
gef_wdt.c
gemini_wdt.c watchdog: add driver for Cortina Gemini watchdog 2017-02-24 14:00:23 -08:00
geodewdt.c
gpio_wdt.c watchdog: gpio: Convert to use infrastructure triggered keepalives 2017-06-05 20:39:27 +02:00
hpwdt.c drivers/watchdog/hpwdt.c: use set_memory.h header 2017-05-08 17:15:14 -07:00
i6300esb.c
ib700wdt.c
ibmasr.c
ie6xx_wdt.c
imgpdc_wdt.c watchdog: constify watchdog_info structures 2017-02-24 14:00:23 -08:00
imx2_wdt.c watchdog: imx2_wdt: add pretimeout function support 2016-10-08 10:27:30 +02:00
indydog.c
intel_scu_watchdog.c
intel_scu_watchdog.h
intel-mid_wdt.c watchdog: intel-mid_wdt: Keep watchdog running 2017-06-05 20:37:35 +02:00
iop_wdt.c
it87_wdt.c watchdog: it87_wdt: constify watchdog_ops structure 2017-09-09 20:06:25 +02:00
it8712f_wdt.c
iTCO_vendor_support.c
iTCO_vendor.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
iTCO_wdt.c watchdog: Revert "iTCO_wdt: all versions count down twice" 2017-09-09 17:41:24 +02:00
ixp4xx_wdt.c
jz4740_wdt.c watchdog: jz4740: Fix modular build 2016-12-16 06:53:54 -08:00
Kconfig watchdog: jz4780: Allow selection of jz4740-wdt driver 2017-11-09 17:09:48 +00:00
kempld_wdt.c watchdog: kempld: fix gcc-4.3 build 2017-03-01 06:15:10 -08:00
ks8695_wdt.c
lantiq_wdt.c watchdog: lantiq: access boot cause register through regmap 2017-09-04 13:53:15 +02:00
loongson1_wdt.c watchdog: loongson1: Add Loongson1 SoC watchdog driver 2016-12-16 06:53:55 -08:00
lpc18xx_wdt.c watchdog: lpc18xx_wdt: Convert timers to use timer_setup() 2017-11-02 15:50:30 -07:00
m54xx_wdt.c
machzwd.c treewide: Switch DEFINE_TIMER callbacks to struct timer_list * 2017-11-21 15:57:05 -08:00
Makefile License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
max63xx_wdt.c watchdog: max63xx: make module's license marker match the header 2016-01-31 16:51:56 +01:00
max77620_wdt.c watchdog: max77620_wdt: constify platform_device_id 2017-09-09 20:40:39 +02:00
mei_wdt.c watchdog: mei_wdt: constify mei_cl_device_id 2017-09-09 21:19:58 +02:00
mena21_wdt.c watchdog: mena21_wdt: Convert to use device managed functions and other improvements 2017-02-24 14:00:23 -08:00
menf21bmc_wdt.c
meson_gxbb_wdt.c watchdog: meson: Handle return value of clk_prepare_enable 2017-07-03 11:02:31 +02:00
meson_wdt.c watchdog: meson-wdt: add support for the watchdog on Meson8 and Meson8m2 2017-09-09 20:14:01 +02:00
mixcomwd.c treewide: Switch DEFINE_TIMER callbacks to struct timer_list * 2017-11-21 15:57:05 -08:00
moxart_wdt.c watchdog: Add 'action' and 'data' parameters to restart handler callback 2016-03-01 15:36:35 +01:00
mpc8xxx_wdt.c treewide: setup_timer() -> timer_setup() 2017-11-21 15:57:07 -08:00
mt7621_wdt.c watchdog: constify watchdog_ops and watchdog_info structures 2017-09-09 20:29:53 +02:00
mtk_wdt.c watchdog: Add 'action' and 'data' parameters to restart handler callback 2016-03-01 15:36:35 +01:00
mtx-1_wdt.c treewide: setup_timer() -> timer_setup() 2017-11-21 15:57:07 -08:00
mv64x60_wdt.c
ni903x_wdt.c watchdog: ni903x_wdt: Add NI 903x/913x watchdog driver 2016-03-01 16:25:39 +01:00
nic7018_wdt.c watchdog: nic7018_wdt: Add NIC7018 watchdog driver 2017-02-24 14:00:23 -08:00
nuc900_wdt.c treewide: setup_timer() -> timer_setup() 2017-11-21 15:57:07 -08:00
nv_tco.c watchdog: add support for MCP78S chipset in nv_tco 2016-07-17 21:04:13 +02:00
nv_tco.h
octeon-wdt-main.c watchdog: octeon-wdt: Add support for 78XX SOCs. 2017-09-04 21:19:03 +02:00
octeon-wdt-nmi.S watchdog: octeon-wdt: Remove old boot vector code. 2017-09-04 21:19:03 +02:00
of_xilinx_wdt.c watchdog: of_xilinx_wdt: Add suspend/resume support 2017-09-09 20:48:18 +02:00
omap_wdt.c watchdog: omap: don't disable the timer when it should be enabled early 2015-12-27 21:09:40 +01:00
omap_wdt.h
orion_wdt.c watchdog: orion: make license info match the file header 2017-06-05 20:39:12 +02:00
pc87413_wdt.c Annotate hardware config module parameters in drivers/watchdog/ 2017-04-20 12:02:32 +01:00
pcwd_pci.c
pcwd_usb.c watchdog: pcwd_usb: constify usb_device_id 2017-09-09 20:37:36 +02:00
pcwd.c treewide: setup_timer() -> timer_setup() 2017-11-21 15:57:07 -08:00
pic32-dmt.c watchdog: pic32-dmt: Remove .owner field for driver 2016-07-25 12:02:32 +02:00
pic32-wdt.c watchdog: pic32-wdt: Fix return value check in pic32_wdt_drv_probe() 2016-07-25 12:02:43 +02:00
pika_wdt.c treewide: setup_timer() -> timer_setup() 2017-11-21 15:57:07 -08:00
pnx833x_wdt.c
pnx4008_wdt.c watchdog: pnx4008: restart: support "cmd" from userspace 2016-03-16 21:09:42 +01:00
pretimeout_noop.c watchdog: pretimeout: add noop pretimeout governor 2016-10-08 10:27:13 +02:00
pretimeout_panic.c watchdog: pretimeout: add panic pretimeout governor 2016-10-08 10:27:17 +02:00
qcom-wdt.c watchdog: qcom: Check for platform_get_resource() failure 2017-09-09 20:50:35 +02:00
rc32434_wdt.c watchdog: rc32434_wdt: fix ioctl error handling 2016-03-01 15:29:42 +01:00
rdc321x_wdt.c treewide: setup_timer() -> timer_setup() 2017-11-21 15:57:07 -08:00
renesas_wdt.c watchdog: renesas_wdt: update copyright dates 2017-09-09 21:11:58 +02:00
retu_wdt.c
riowd.c
rn5t618_wdt.c watchdog: constify watchdog_info structures 2017-02-24 14:00:23 -08:00
rt2880_wdt.c watchdog: constify watchdog_ops and watchdog_info structures 2017-09-09 20:29:53 +02:00
rza_wdt.c watchdog: add rza_wdt driver 2017-06-05 20:37:17 +02:00
s3c2410_wdt.c watchdog: s3c2410: Minor code cleanup 2017-06-05 20:38:52 +02:00
sa1100_wdt.c watchdog: sa11x0/pxa: fix error path of driver initialization 2017-02-24 14:00:23 -08:00
sama5d4_wdt.c watchdog: sama5d4: Add comment explaining what happens on resume 2017-06-05 17:58:39 +02:00
sb_wdog.c
sbc60xxwdt.c treewide: Switch DEFINE_TIMER callbacks to struct timer_list * 2017-11-21 15:57:05 -08:00
sbc7240_wdt.c
sbc8360.c
sbc_epx_c3.c
sbc_fitpc2_wdt.c
sbsa_gwdt.c watchdog: constify watchdog_ops structures 2017-02-24 14:00:23 -08:00
sc520_wdt.c treewide: Switch DEFINE_TIMER callbacks to struct timer_list * 2017-11-21 15:57:05 -08:00
sc1200wdt.c watchdog: sc1200: constify pnp_device_id 2017-09-09 21:14:46 +02:00
sch311x_wdt.c
scx200_wdt.c
shwdt.c treewide: setup_timer() -> timer_setup() 2017-11-21 15:57:07 -08:00
sirfsoc_wdt.c watchdog: constify watchdog_ops structures 2017-02-24 14:00:23 -08:00
smsc37b787_wdt.c
softdog.c watchdog: softdog: fire watchdog even if softirqs do not get to run 2017-03-01 06:15:10 -08:00
sp805_wdt.c watchdog: sp805: constify amba_id 2017-09-09 21:17:44 +02:00
sp5100_tco.c watchdog: sp5100_tco: properly check for new register layouts 2016-05-14 16:16:04 +02:00
sp5100_tco.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
st_lpc_wdt.c watchdog: st_wdt: Remove support for obsolete platforms 2016-09-24 08:59:49 +02:00
stm32_iwdg.c watchdog: stm32_iwdg: constify watchdog_ops structure 2017-09-09 20:06:31 +02:00
stmp3xxx_rtc_wdt.c watchdog: stmp3xxx: Remove unused variables 2016-01-11 21:51:28 +01:00
sun4v_wdt.c watchdog: constify watchdog_ops structures 2017-02-24 14:00:23 -08:00
sunxi_wdt.c watchdog: sunxi_wdt: Convert to use device managed functions and other improvements 2017-02-24 14:00:23 -08:00
tangox_wdt.c watchdog: tangox: Use watchdog core to install restart handler 2017-02-24 14:00:23 -08:00
tegra_wdt.c watchdog: tegra_wdt: Convert to use device managed functions 2017-02-24 14:00:23 -08:00
ts72xx_wdt.c watchdog: ts72xx_wdt: constify watchdog_ops structure 2017-09-09 20:06:14 +02:00
ts4800_wdt.c watchdog: ts4800: add driver for TS-4800 watchdog 2015-12-28 22:29:35 +01:00
twl4030_wdt.c mfd: twl: Move header file out of I2C realm 2017-09-04 14:41:02 +01:00
txx9wdt.c watchdog: txx9wdt: Add missing clock (un)prepare calls for CCF 2016-09-23 22:36:32 +02:00
uniphier_wdt.c watchdog: uniphier: add UniPhier watchdog driver 2017-07-03 13:58:55 +02:00
ux500_wdt.c
via_wdt.c treewide: Switch DEFINE_TIMER callbacks to struct timer_list * 2017-11-21 15:57:05 -08:00
w83627hf_wdt.c watchdog: w83627hf: make const array chip_name static 2017-09-09 20:08:03 +02:00
w83877f_wdt.c treewide: Switch DEFINE_TIMER callbacks to struct timer_list * 2017-11-21 15:57:05 -08:00
w83977f_wdt.c
wafer5823wdt.c
watchdog_core.c drivers/watchdog: make use of devm_register_reboot_notifier() 2017-11-17 16:10:04 -08:00
watchdog_core.h watchdog: Create watchdog device in watchdog_dev.c 2015-12-29 20:36:01 +01:00
watchdog_dev.c watchdog: Fix kref imbalance seen if handle_boot_enabled=0 2017-12-17 11:01:48 +01:00
watchdog_pretimeout.c watchdog: pretimeout: add pretimeout_available_governors attribute 2016-10-08 10:27:24 +02:00
watchdog_pretimeout.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
wd501p.h
wdat_wdt.c watchdog: wdat_wdt: Ping the watchdog on resume 2016-10-21 01:28:33 +02:00
wdrtas.c
wdt285.c
wdt977.c
wdt_pci.c watchdog: wdt_pci: fix build error if define SOFTWARE_REBOOT 2017-05-18 18:51:44 +02:00
wdt.c Annotate hardware config module parameters in drivers/watchdog/ 2017-04-20 12:02:32 +01:00
wm831x_wdt.c watchdog: wm831x_wdt: Convert to use device managed functions 2017-02-24 14:00:23 -08:00
wm8350_wdt.c
xen_wdt.c
ziirave_wdt.c watchdog: ziirave: constify i2c_device_id 2017-09-09 21:16:17 +02:00
zx2967_wdt.c watchdog: zx2967: explicitly request exclusive reset control 2017-09-09 20:18:43 +02:00