kernel-fxtec-pro1x/drivers/watchdog
Guenter Roeck 60403f7a4d watchdog: Fix race condition in registration code
A race condition exists when registering the first watchdog device.
Sequence of events:

- watchdog_register_device calls watchdog_dev_register
- watchdog_dev_register creates the watchdog misc device by calling
  misc_register.
  At that time, the matching character device (/dev/watchdog0) does not yet
  exist, and old_wdd is not set either.
- Userspace gets an event and opens /dev/watchdog
- watchdog_open is called and sets wdd = old_wdd, which is still NULL,
  and tries to dereference it. This causes the kernel to panic.

Seen with systemd trying to open /dev/watchdog immediately after
it was created.

Reported-by: Arkadiusz Miskiewicz <arekm@maven.pl>
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
Tested-by: Arkadiusz Miskiewicz <arekm@maven.pl>
Signed-off-by: Wim Van Sebroeck <wim@iguana.be>
2013-05-09 08:13:41 +02:00
..
acquirewdt.c watchdog: remove use of __devexit 2012-11-28 12:00:24 -08:00
advantechwdt.c watchdog: remove use of __devexit 2012-11-28 12:00:24 -08: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: Convert to devm_ioremap_resource() 2013-01-25 12:21:48 -08:00
at32ap700x_wdt.c watchdog: convert drivers/watchdog/* to use module_platform_driver_probe 2013-01-17 17:39:33 -08:00
at91rm9200_wdt.c watchdog: at91rm9200: add DT support 2013-03-01 12:55:27 +01:00
at91sam9_wdt.c watchdog: add timeout-sec property binding 2013-03-01 12:53:45 +01:00
at91sam9_wdt.h ARM: at91: make watchdog drivers soc independent 2011-11-28 22:50:39 +08:00
ath79_wdt.c watchdog: Convert to devm_ioremap_resource() 2013-05-09 08:12:00 +02:00
bcm47xx_wdt.c watchdog: bcm47xx_wdt.c: add hard timer 2013-03-01 12:47:31 +01:00
bcm63xx_wdt.c watchdog: remove use of __devexit 2012-11-28 12:00:24 -08:00
bfin_wdt.c watchdog: remove use of __devexit 2012-11-28 12:00:24 -08:00
booke_wdt.c watchdog: Convert BookE watchdog driver to watchdog infrastructure 2013-03-01 12:46:28 +01:00
coh901327_wdt.c watchdog: convert drivers/watchdog/* to use module_platform_driver_probe 2013-01-17 17:39:33 -08:00
cpu5wdt.c watchdog: cpu5wdt.c: add missing del_timer call 2012-12-19 22:24:41 +01:00
cpwd.c new helper: file_inode(file) 2013-02-22 23:31:31 -05:00
da9052_wdt.c watchdog: da9052: Fix invalid free of devm_ allocated data 2012-12-19 22:25:07 +01:00
da9055_wdt.c watchdog: da9055: Don't update wdt_dev->timeout in da9055_wdt_set_timeout error path 2013-01-02 12:06:49 +01:00
davinci_wdt.c watchdog: Convert to devm_ioremap_resource() 2013-05-09 08:12:00 +02:00
dw_wdt.c watchdog: Convert to devm_ioremap_resource() 2013-01-25 12:21:48 -08:00
ep93xx_wdt.c watchdog: remove use of __devexit 2012-11-28 12:00:24 -08:00
eurotechwdt.c Disintegrate and delete asm/system.h 2012-03-28 15:58:21 -07:00
f71808e_wdt.c watchdog: f71808e_wdt: Add support for Jetway JNF99 motherboard 2012-07-23 12:46:38 +02:00
gef_wdt.c watchdog: gef_wdt.c: add missing remove callback 2013-03-01 12:18:33 +01:00
geodewdt.c watchdog: remove use of __devexit 2012-11-28 12:00:24 -08:00
hpwdt.c watchdog: hpwdt.c: Increase version string 2012-12-19 22:24:40 +01:00
i6300esb.c watchdog: remove use of __devexit 2012-11-28 12:00:24 -08:00
ib700wdt.c watchdog: remove use of __devexit 2012-11-28 12:00:24 -08:00
ibmasr.c watchdog: nowayout is bool 2012-03-27 20:06:02 +02:00
ie6xx_wdt.c watchdog: remove use of __devexit 2012-11-28 12:00:24 -08:00
imx2_wdt.c watchdog: Convert to devm_ioremap_resource() 2013-01-25 12:21:48 -08: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: remove use of __devexit 2012-11-28 12:00:24 -08:00
ixp4xx_wdt.c watchdog: nowayout is bool 2012-03-27 20:06:02 +02:00
jz4740_wdt.c watchdog: Convert to devm_ioremap_resource() 2013-01-25 12:21:48 -08:00
Kconfig watchdog: Revert the AT91RM9200_WATCHDOG dependency 2013-04-14 09:09:10 +02:00
ks8695_wdt.c watchdog: remove use of __devexit 2012-11-28 12:00:24 -08:00
lantiq_wdt.c watchdog: Convert to devm_ioremap_resource() 2013-01-25 12:21:48 -08:00
m54xx_wdt.c m68knommu: clean up ColdFire 54xx General Timer definitions 2012-09-27 23:34:03 +10:00
machzwd.c Disintegrate and delete asm/system.h 2012-03-28 15:58:21 -07:00
Makefile watchdog: remove old STMP3xxx driver 2013-03-01 12:44:40 +01:00
max63xx_wdt.c watchdog: Convert to devm_ioremap_resource() 2013-01-25 12:21:48 -08:00
mixcomwd.c watchdog: remove use of __devinitdata 2012-11-28 12:00:24 -08:00
mpc8xxx_wdt.c watchdog: remove use of __devexit 2012-11-28 12:00:24 -08:00
mpcore_wdt.c watchdog: Convert dev_printk(KERN_<LEVEL> to dev_<level>( 2012-12-19 22:25:06 +01:00
mtx-1_wdt.c watchdog: remove use of __devexit 2012-11-28 12:00:24 -08:00
mv64x60_wdt.c watchdog: remove use of __devexit 2012-11-28 12:00:24 -08:00
nuc900_wdt.c watchdog: remove use of __devexit 2012-11-28 12:00:24 -08:00
nv_tco.c watchdog: remove use of __devexit 2012-11-28 12:00:24 -08:00
nv_tco.h watchdog: Add TCO support for nVidia chipsets 2011-01-12 13:51:23 +00:00
octeon-wdt-main.c watchdog: nowayout is bool 2012-03-27 20:06:02 +02:00
octeon-wdt-nmi.S WATCHDOG: Add watchdog driver for OCTEON SOCs 2010-08-05 13:26:22 +01:00
of_xilinx_wdt.c watchdog: remove use of __devexit 2012-11-28 12:00:24 -08:00
omap_wdt.c watchdog: omap_wdt: Add option nowayout 2013-03-01 12:49:02 +01:00
omap_wdt.h watchdog: cleanup spaces before tabs 2011-03-15 16:02:27 +00:00
orion_wdt.c watchdog: add timeout-sec property binding 2013-03-01 12:53:45 +01:00
pc87413_wdt.c Disintegrate and delete asm/system.h 2012-03-28 15:58:21 -07:00
pcwd.c watchdog: remove use of __devexit 2012-11-28 12:00:24 -08:00
pcwd_pci.c watchdog: remove use of __devexit 2012-11-28 12:00:24 -08: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: add timeout-sec property binding 2013-03-01 12:53:45 +01:00
rc32434_wdt.c watchdog: remove use of __devexit 2012-11-28 12:00:24 -08:00
rdc321x_wdt.c watchdog: remove use of __devexit 2012-11-28 12:00:24 -08:00
retu_wdt.c watchdog: introduce retu_wdt driver 2013-03-01 12:31:14 +01:00
riowd.c watchdog: remove use of __devexit 2012-11-28 12:00:24 -08:00
s3c2410_wdt.c watchdog: Convert to devm_ioremap_resource() 2013-05-09 08:12:00 +02:00
sa1100_wdt.c ARM: sa11x0/pxa: convert OS timer registers to IOMEM 2012-07-09 17:37:35 +01: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: remove use of __devexit 2012-11-28 12:00:24 -08:00
scx200_wdt.c watchdog: nowayout is bool 2012-03-27 20:06:02 +02:00
shwdt.c watchdog: Convert to devm_ioremap_resource() 2013-05-09 08:12:00 +02: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_wdt.c: use clk_prepare_enable and clk_disable_unprepare 2012-12-19 22:24:38 +01:00
sp5100_tco.c watchdog: sp5100_tco: Remove code that may cause a boot failure 2013-03-22 23:21:47 +01:00
sp5100_tco.h watchdog: sp5100_tco: Set the AcpiMmioSel bitmask value to 1 instead of 2 2013-03-22 23:21:55 +01:00
stmp3xxx_rtc_wdt.c watchdog: add new driver for STMP3xxx and i.MX23/28 2013-03-01 12:44:34 +01:00
ts72xx_wdt.c watchdog: remove use of __devexit 2012-11-28 12:00:24 -08:00
twl4030_wdt.c watchdog: twl4030_wdt: add DT support 2013-01-02 12:07:05 +01:00
txx9wdt.c watchdog: Convert to devm_ioremap_resource() 2013-01-25 12:21:48 -08:00
ux500_wdt.c watchdog: Add support for ux500_wdt watchdog 2013-02-14 00:22:53 +01:00
via_wdt.c watchdog: remove use of __devexit 2012-11-28 12:00:24 -08: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: core: dt: add support for the timeout-sec dt property 2013-03-01 12:48:36 +01:00
watchdog_core.h watchdog: Add multiple device support 2012-05-30 07:54:25 +02:00
watchdog_dev.c watchdog: Fix race condition in registration code 2013-05-09 08:13:41 +02:00
wd501p.h [WATCHDOG] More coding-style and trivial clean-up 2009-03-25 09:07:04 +00:00
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: remove use of __devexit 2012-11-28 12:00:24 -08:00
wm831x_wdt.c watchdog: remove use of __devexit 2012-11-28 12:00:24 -08:00
wm8350_wdt.c watchdog: remove use of __devexit 2012-11-28 12:00:24 -08:00
xen_wdt.c watchdog: remove use of __devexit 2012-11-28 12:00:24 -08:00