remarkable-linux/drivers/watchdog
Hans de Goede e907df3272 watchdog: Add support for dynamically allocated watchdog_device structs
If a driver's watchdog_device struct is part of a dynamically allocated
struct (which it often will be), merely locking the module is not enough,
even with a drivers module locked, the driver can be unbound from the device,
examples:
1) The root user can unbind it through sysfd
2) The i2c bus master driver being unloaded for an i2c watchdog

I will gladly admit that these are corner cases, but we still need to handle
them correctly.

The fix for this consists of 2 parts:
1) Add ref / unref operations, so that the driver can refcount the struct
   holding the watchdog_device struct and delay freeing it until any
   open filehandles referring to it are closed
2) Most driver operations will do IO on the device and the driver should not
   do any IO on the device after it has been unbound. Rather then letting each
   driver deal with this internally, it is better to ensure at the watchdog
   core level that no operations (other then unref) will get called after
   the driver has called watchdog_unregister_device(). This actually is the
   bulk of this patch.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Wim Van Sebroeck <wim@iguana.be>
2012-05-30 07:55:31 +02:00
..
acquirewdt.c watchdog: nowayout is bool 2012-03-27 20:06:02 +02:00
advantechwdt.c Disintegrate and delete asm/system.h 2012-03-28 15:58:21 -07:00
alim1535_wdt.c watchdog: nowayout is bool 2012-03-27 20:06:02 +02:00
alim7101_wdt.c Disintegrate and delete asm/system.h 2012-03-28 15:58:21 -07:00
ar7_wdt.c watchdog: ar7_wdt.c: use devm_request_and_ioremap 2012-05-23 16:16:43 +02:00
at32ap700x_wdt.c watchdog: nowayout is bool 2012-03-27 20:06:02 +02:00
at91rm9200_wdt.c Merge git://www.linux-watchdog.org/linux-watchdog 2012-03-28 13:03:26 -07:00
at91sam9_wdt.c watchdog: nowayout is bool 2012-03-27 20:06:02 +02:00
at91sam9_wdt.h
ath79_wdt.c watchdog: nowayout is bool 2012-03-27 20:06:02 +02:00
bcm47xx_wdt.c watchdog: nowayout is bool 2012-03-27 20:06:02 +02:00
bcm63xx_wdt.c watchdog: nowayout is bool 2012-03-27 20:06:02 +02:00
bfin_wdt.c watchdog: nowayout is bool 2012-03-27 20:06:02 +02:00
booke_wdt.c Disintegrate and delete asm/system.h 2012-03-28 15:58:21 -07:00
coh901327_wdt.c watchdog: coh901327_wdt.c: fix timeout 2012-03-27 20:15:57 +02:00
cpu5wdt.c watchdog: Use pr_<fmt> and pr_<level> 2012-03-27 19:59:26 +02:00
cpwd.c watchdog: Use pr_<fmt> and pr_<level> 2012-03-27 19:59:26 +02:00
davinci_wdt.c watchdog: convert drivers/watchdog/* to use module_platform_driver() 2012-01-06 15:17:25 +01:00
dw_wdt.c watchdog: nowayout is bool 2012-03-27 20:06:02 +02:00
ep93xx_wdt.c watchdog: ep93xx_wdt: timeout is an unsigned int value. 2012-03-27 20:15:24 +02:00
eurotechwdt.c Disintegrate and delete asm/system.h 2012-03-28 15:58:21 -07:00
f71808e_wdt.c watchdog: Use pr_<fmt> and pr_<level> 2012-03-27 19:59:26 +02:00
gef_wdt.c watchdog: nowayout is bool 2012-03-27 20:06:02 +02:00
geodewdt.c watchdog: nowayout is bool 2012-03-27 20:06:02 +02:00
hpwdt.c watchdog: Use module_pci_driver 2012-05-23 16:23:53 +02:00
i6300esb.c watchdog: Use module_pci_driver 2012-05-23 16:23:53 +02:00
ib700wdt.c Disintegrate and delete asm/system.h 2012-03-28 15:58:21 -07:00
ibmasr.c watchdog: nowayout is bool 2012-03-27 20:06:02 +02:00
ie6xx_wdt.c watchdog: ie6xx_wdt needs io.h 2012-05-23 16:25:33 +02:00
imx2_wdt.c watchdog imx2: prepare clk before enabling it 2012-04-25 17:03:42 +02:00
indydog.c watchdog: nowayout is bool 2012-03-27 20:06:02 +02:00
intel_scu_watchdog.c watchdog: Use pr_<fmt> and pr_<level> 2012-03-27 19:59:26 +02:00
intel_scu_watchdog.h watchdog: Use pr_<fmt> and pr_<level> 2012-03-27 19:59:26 +02:00
iop_wdt.c watchdog: nowayout is bool 2012-03-27 20:06:02 +02:00
it87_wdt.c watchdog: it87_wdt: Add support for IT8728F watchdog. 2012-05-23 16:24:43 +02:00
it8712f_wdt.c watchdog: nowayout is bool 2012-03-27 20:06:02 +02:00
iTCO_vendor.h watchdog: Convert iTCO_wdt driver to mfd model 2012-05-09 17:20:09 +02:00
iTCO_vendor_support.c watchdog: Convert iTCO_wdt driver to mfd model 2012-05-09 17:20:09 +02:00
iTCO_wdt.c watchdog: Convert iTCO_wdt driver to mfd model 2012-05-09 17:20:09 +02:00
ixp4xx_wdt.c watchdog: nowayout is bool 2012-03-27 20:06:02 +02:00
jz4740_wdt.c watchdog: fix set_timeout operations 2012-03-27 20:08:09 +02:00
Kconfig MFD changes for 3.5 2012-05-29 11:53:11 -07:00
ks8695_wdt.c watchdog: nowayout is bool 2012-03-27 20:06:02 +02:00
lantiq_wdt.c watchdog: MIPS: lantiq: implement OF support and minor fixes 2012-05-21 14:31:54 +01:00
m54xx_wdt.c watchdog: nowayout is bool 2012-03-27 20:06:02 +02:00
machzwd.c Disintegrate and delete asm/system.h 2012-03-28 15:58:21 -07:00
Makefile watchdog: Add watchdog driver for Intel Atom E6XX 2012-05-23 16:25:13 +02:00
max63xx_wdt.c watchdog: Convert max63xx_wdt driver to watchdog framework 2012-03-27 20:06:59 +02:00
mixcomwd.c watchdog: nowayout is bool 2012-03-27 20:06:02 +02:00
mpc8xxx_wdt.c watchdog: nowayout is bool 2012-03-27 20:06:02 +02:00
mpcore_wdt.c watchdog: mpcore_wdt: Allow platform_get_irq() to fail 2012-03-27 20:14:20 +02:00
mtx-1_wdt.c watchdog: convert drivers/watchdog/* to use module_platform_driver() 2012-01-06 15:17:25 +01:00
mv64x60_wdt.c watchdog: nowayout is bool 2012-03-27 20:06:02 +02:00
nuc900_wdt.c watchdog: nowayout is bool 2012-03-27 20:06:02 +02:00
nv_tco.c watchdog: nowayout is bool 2012-03-27 20:06:02 +02:00
nv_tco.h
octeon-wdt-main.c watchdog: nowayout is bool 2012-03-27 20:06:02 +02:00
octeon-wdt-nmi.S
of_xilinx_wdt.c watchdog: Use pr_<fmt> and pr_<level> 2012-03-27 19:59:26 +02:00
omap_wdt.c watchdog: Use pr_<fmt> and pr_<level> 2012-03-27 19:59:26 +02:00
omap_wdt.h
orion_wdt.c ARM: Orion: WDT: Add clk/clkdev support 2012-05-08 16:33:57 -07:00
pc87413_wdt.c Disintegrate and delete asm/system.h 2012-03-28 15:58:21 -07:00
pcwd.c watchdog: nowayout is bool 2012-03-27 20:06:02 +02:00
pcwd_pci.c watchdog: Use module_pci_driver 2012-05-23 16:23:53 +02:00
pcwd_usb.c watchdog: nowayout is bool 2012-03-27 20:06:02 +02:00
pika_wdt.c watchdog: nowayout is bool 2012-03-27 20:06:02 +02:00
pnx833x_wdt.c watchdog: nowayout is bool 2012-03-27 20:06:02 +02:00
pnx4008_wdt.c watchdog: Device tree support for pnx4008-wdt 2012-05-23 16:16:55 +02:00
rc32434_wdt.c watchdog: nowayout is bool 2012-03-27 20:06:02 +02:00
rdc321x_wdt.c watchdog: convert drivers/watchdog/* to use module_platform_driver() 2012-01-06 15:17:25 +01:00
riowd.c watchdog: Use pr_<fmt> and pr_<level> 2012-03-27 19:59:26 +02:00
s3c2410_wdt.c watchdog: s3c2410_wdt: Set timeout to actually achieved timeout 2012-05-23 16:26:20 +02:00
sa1100_wdt.c ARM: cleanups of io includes 2012-03-29 18:02:10 -07:00
sb_wdog.c watchdog: Use pr_<fmt> and pr_<level> 2012-03-27 19:59:26 +02:00
sbc60xxwdt.c Disintegrate and delete asm/system.h 2012-03-28 15:58:21 -07:00
sbc7240_wdt.c Disintegrate and delete asm/system.h 2012-03-28 15:58:21 -07:00
sbc8360.c Disintegrate and delete asm/system.h 2012-03-28 15:58:21 -07:00
sbc_epx_c3.c watchdog: nowayout is bool 2012-03-27 20:06:02 +02:00
sbc_fitpc2_wdt.c Disintegrate and delete asm/system.h 2012-03-28 15:58:21 -07:00
sc520_wdt.c Disintegrate and delete asm/system.h 2012-03-28 15:58:21 -07:00
sc1200wdt.c watchdog: nowayout is bool 2012-03-27 20:06:02 +02:00
sch311x_wdt.c watchdog: sch311x_wdt.c: Remove RESGEN 2012-05-23 16:17:51 +02:00
scx200_wdt.c watchdog: nowayout is bool 2012-03-27 20:06:02 +02:00
shwdt.c watchdog: shwdt: Use finer grained clock control. 2012-05-10 16:14:40 +09:00
smsc37b787_wdt.c Disintegrate and delete asm/system.h 2012-03-28 15:58:21 -07:00
softdog.c watchdog: softdog: convert to watchdog core 2012-03-27 20:07:21 +02:00
sp805_wdt.c watchdog: sp805: Use devm routines 2012-03-27 20:14:34 +02:00
sp5100_tco.c watchdog: sp5100_tco.c: quiet sparse noise about using plain integer was NULL pointer 2012-05-23 16:16:21 +02:00
sp5100_tco.h
stmp3xxx_wdt.c watchdog: nowayout is bool 2012-03-27 20:06:02 +02:00
ts72xx_wdt.c watchdog: nowayout is bool 2012-03-27 20:06:02 +02:00
twl4030_wdt.c watchdog: nowayout is bool 2012-03-27 20:06:02 +02:00
txx9wdt.c watchdog: txx9wdt: fix timeout 2012-03-27 20:16:13 +02:00
via_wdt.c watchdog: Add watchdog_active() routine 2012-05-30 07:53:46 +02:00
w83627hf_wdt.c Disintegrate and delete asm/system.h 2012-03-28 15:58:21 -07:00
w83697hf_wdt.c Disintegrate and delete asm/system.h 2012-03-28 15:58:21 -07:00
w83697ug_wdt.c Disintegrate and delete asm/system.h 2012-03-28 15:58:21 -07:00
w83877f_wdt.c Disintegrate and delete asm/system.h 2012-03-28 15:58:21 -07:00
w83977f_wdt.c Disintegrate and delete asm/system.h 2012-03-28 15:58:21 -07:00
wafer5823wdt.c watchdog: nowayout is bool 2012-03-27 20:06:02 +02:00
watchdog_core.c watchdog: Add Locking support 2012-05-30 07:55:23 +02:00
watchdog_core.h watchdog: Add multiple device support 2012-05-30 07:54:25 +02:00
watchdog_dev.c watchdog: Add support for dynamically allocated watchdog_device structs 2012-05-30 07:55:31 +02:00
wd501p.h
wdrtas.c watchdog: nowayout is bool 2012-03-27 20:06:02 +02:00
wdt.c Disintegrate and delete asm/system.h 2012-03-28 15:58:21 -07:00
wdt285.c Disintegrate and delete asm/system.h 2012-03-28 15:58:21 -07:00
wdt977.c Disintegrate and delete asm/system.h 2012-03-28 15:58:21 -07:00
wdt_pci.c watchdog: Use module_pci_driver 2012-05-23 16:23:53 +02:00
wm831x_wdt.c watchdog: wm831x: Convert to gpio_request_one() 2012-05-23 16:26:07 +02:00
wm8350_wdt.c watchdog: fix set_timeout operations 2012-03-27 20:08:09 +02:00
xen_wdt.c watchdog: xen: don't clear is_active when xen_wdt_stop() failed 2012-03-27 20:13:55 +02:00