mirror of
https://kernel.googlesource.com/pub/scm/linux/kernel/git/stable/linux-stable.git
synced 2025-10-28 19:05:30 +10:00
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> |
||
|---|---|---|
| .. | ||
| acquirewdt.c | ||
| advantechwdt.c | ||
| alim1535_wdt.c | ||
| alim7101_wdt.c | ||
| ar7_wdt.c | ||
| at32ap700x_wdt.c | ||
| at91rm9200_wdt.c | ||
| at91sam9_wdt.c | ||
| at91sam9_wdt.h | ||
| ath79_wdt.c | ||
| bcm47xx_wdt.c | ||
| bcm63xx_wdt.c | ||
| bfin_wdt.c | ||
| booke_wdt.c | ||
| coh901327_wdt.c | ||
| cpu5wdt.c | ||
| cpwd.c | ||
| da9052_wdt.c | ||
| da9055_wdt.c | ||
| davinci_wdt.c | ||
| dw_wdt.c | ||
| ep93xx_wdt.c | ||
| eurotechwdt.c | ||
| f71808e_wdt.c | ||
| gef_wdt.c | ||
| geodewdt.c | ||
| hpwdt.c | ||
| i6300esb.c | ||
| ib700wdt.c | ||
| ibmasr.c | ||
| ie6xx_wdt.c | ||
| imx2_wdt.c | ||
| indydog.c | ||
| intel_scu_watchdog.c | ||
| intel_scu_watchdog.h | ||
| iop_wdt.c | ||
| it87_wdt.c | ||
| it8712f_wdt.c | ||
| iTCO_vendor_support.c | ||
| iTCO_vendor.h | ||
| iTCO_wdt.c | ||
| ixp4xx_wdt.c | ||
| jz4740_wdt.c | ||
| Kconfig | ||
| ks8695_wdt.c | ||
| lantiq_wdt.c | ||
| m54xx_wdt.c | ||
| machzwd.c | ||
| Makefile | ||
| max63xx_wdt.c | ||
| mixcomwd.c | ||
| mpc8xxx_wdt.c | ||
| mpcore_wdt.c | ||
| mtx-1_wdt.c | ||
| mv64x60_wdt.c | ||
| nuc900_wdt.c | ||
| nv_tco.c | ||
| nv_tco.h | ||
| octeon-wdt-main.c | ||
| octeon-wdt-nmi.S | ||
| of_xilinx_wdt.c | ||
| omap_wdt.c | ||
| omap_wdt.h | ||
| orion_wdt.c | ||
| pc87413_wdt.c | ||
| pcwd_pci.c | ||
| pcwd_usb.c | ||
| pcwd.c | ||
| pika_wdt.c | ||
| pnx833x_wdt.c | ||
| pnx4008_wdt.c | ||
| rc32434_wdt.c | ||
| rdc321x_wdt.c | ||
| retu_wdt.c | ||
| riowd.c | ||
| s3c2410_wdt.c | ||
| sa1100_wdt.c | ||
| sb_wdog.c | ||
| sbc60xxwdt.c | ||
| sbc7240_wdt.c | ||
| sbc8360.c | ||
| sbc_epx_c3.c | ||
| sbc_fitpc2_wdt.c | ||
| sc520_wdt.c | ||
| sc1200wdt.c | ||
| sch311x_wdt.c | ||
| scx200_wdt.c | ||
| shwdt.c | ||
| smsc37b787_wdt.c | ||
| softdog.c | ||
| sp805_wdt.c | ||
| sp5100_tco.c | ||
| sp5100_tco.h | ||
| stmp3xxx_rtc_wdt.c | ||
| ts72xx_wdt.c | ||
| twl4030_wdt.c | ||
| txx9wdt.c | ||
| ux500_wdt.c | ||
| via_wdt.c | ||
| w83627hf_wdt.c | ||
| w83697hf_wdt.c | ||
| w83697ug_wdt.c | ||
| w83877f_wdt.c | ||
| w83977f_wdt.c | ||
| wafer5823wdt.c | ||
| watchdog_core.c | ||
| watchdog_core.h | ||
| watchdog_dev.c | ||
| wd501p.h | ||
| wdrtas.c | ||
| wdt285.c | ||
| wdt977.c | ||
| wdt_pci.c | ||
| wdt.c | ||
| wm831x_wdt.c | ||
| wm8350_wdt.c | ||
| xen_wdt.c | ||