linux/drivers/watchdog
Arnd Bergmann 613655fa39 drivers: autoconvert trivial BKL users to private mutex
All these files use the big kernel lock in a trivial
way to serialize their private file operations,
typically resulting from an earlier semi-automatic
pushdown from VFS.

None of these drivers appears to want to lock against
other code, and they all use the BKL as the top-level
lock in their file operations, meaning that there
is no lock-order inversion problem.

Consequently, we can remove the BKL completely,
replacing it with a per-file mutex in every case.
Using a scripted approach means we can avoid
typos.

These drivers do not seem to be under active
maintainance from my brief investigation. Apologies
to those maintainers that I have missed.

file=$1
name=$2
if grep -q lock_kernel ${file} ; then
    if grep -q 'include.*linux.mutex.h' ${file} ; then
            sed -i '/include.*<linux\/smp_lock.h>/d' ${file}
    else
            sed -i 's/include.*<linux\/smp_lock.h>.*$/include <linux\/mutex.h>/g' ${file}
    fi
    sed -i ${file} \
        -e "/^#include.*linux.mutex.h/,$ {
                1,/^\(static\|int\|long\)/ {
                     /^\(static\|int\|long\)/istatic DEFINE_MUTEX(${name}_mutex);

} }"  \
    -e "s/\(un\)*lock_kernel\>[ ]*()/mutex_\1lock(\&${name}_mutex)/g" \
    -e '/[      ]*cycle_kernel_lock();/d'
else
    sed -i -e '/include.*\<smp_lock.h\>/d' ${file}  \
                -e '/cycle_kernel_lock()/d'
fi

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2010-10-05 15:01:04 +02:00
..
acquirewdt.c
advantechwdt.c
adx_wdt.c
alim1535_wdt.c
alim7101_wdt.c
ar7_wdt.c
at32ap700x_wdt.c watchdog: at32ap700x_wdt: register misc device last in probe() function 2010-06-17 09:56:57 +00:00
at91rm9200_wdt.c
at91sam9_wdt.c
bcm47xx_wdt.c
bfin_wdt.c watchdog: bfin: use new common Blackfin watchdog header 2010-05-25 09:03:07 +00:00
booke_wdt.c watchdog: booke_wdt: fix ioctl status flags 2010-05-25 09:04:06 +00:00
coh901327_wdt.c
cpu5wdt.c
cpwd.c drivers: autoconvert trivial BKL users to private mutex 2010-10-05 15:01:04 +02:00
davinci_wdt.c
ep93xx_wdt.c
eurotechwdt.c watchdog: update/improve/consolidate watchdog driver 2010-05-25 09:05:34 +00:00
f71808e_wdt.c watchdog: f71808e_wdt: new watchdog driver for Fintek F71808E and F71882FG 2010-08-08 18:21:42 +00:00
gef_wdt.c of/device: Replace struct of_device with struct platform_device 2010-08-06 09:25:50 -06:00
geodewdt.c
hpwdt.c watchdog: hpwdt (12/12): Make NMI decoding a compile-time option 2010-08-13 20:54:53 +00:00
i6300esb.c
ib700wdt.c
ibmasr.c
imx2_wdt.c watchdog: [PATCH 3/3] imx2_wdt: fix section mismatch 2010-06-13 08:20:06 +00:00
indydog.c
iop_wdt.c
it87_wdt.c
it8712f_wdt.c
iTCO_vendor_support.c iTCO_wdt: fix TCO V1 timeout values and limits 2010-05-25 09:05:56 +00:00
iTCO_vendor.h
iTCO_wdt.c iTCO_wdt: fix TCO V1 timeout values and limits 2010-05-25 09:05:56 +00:00
ixp4xx_wdt.c
ixp2000_wdt.c
Kconfig watchdog: hpwdt (12/12): Make NMI decoding a compile-time option 2010-08-13 20:54:53 +00:00
ks8695_wdt.c
machzwd.c
Makefile watchdog: Adding support for ARM Primecell SP805 Watchdog 2010-08-08 18:22:25 +00:00
max63xx_wdt.c
mixcomwd.c
mpc8xxx_wdt.c of/device: Replace struct of_device with struct platform_device 2010-08-06 09:25:50 -06:00
mpcore_wdt.c
mtx-1_wdt.c
mv64x60_wdt.c
nuc900_wdt.c
octeon-wdt-main.c WATCHDOG: Add watchdog driver for OCTEON SOCs 2010-08-05 13:26:22 +01:00
octeon-wdt-nmi.S WATCHDOG: Add watchdog driver for OCTEON SOCs 2010-08-05 13:26:22 +01:00
omap_wdt.c
omap_wdt.h
orion_wdt.c
pc87413_wdt.c watchdog: fix several MODULE_PARM_DESC strings 2010-05-25 09:03:52 +00:00
pcwd_pci.c
pcwd_usb.c
pcwd.c
pika_wdt.c
pnx833x_wdt.c watchdog: fix several MODULE_PARM_DESC strings 2010-05-25 09:03:52 +00:00
pnx4008_wdt.c
rc32434_wdt.c
rdc321x_wdt.c mfd: Change rdc321x resources flags to IORESOURCE_IO 2010-05-28 01:37:52 +02:00
riowd.c of/device: Replace struct of_device with struct platform_device 2010-08-06 09:25:50 -06:00
s3c2410_wdt.c watchdog: s3c2410_wdt - Fix removing of platform device 2010-08-08 18:20:09 +00:00
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 watchdog: sch311x_wdt.c: set parent before registeriing the misc device in probe() function 2010-08-08 18:21:15 +00:00
scx200_wdt.c
shwdt.c watchdog: fix several MODULE_PARM_DESC strings 2010-05-25 09:03:52 +00:00
smsc37b787_wdt.c
softdog.c
sp805_wdt.c watchdog: Adding support for ARM Primecell SP805 Watchdog 2010-08-08 18:22:25 +00:00
stmp3xxx_wdt.c
ts72xx_wdt.c
twl4030_wdt.c watchdog: twl4030_wdt: Disable watchdog during probing 2010-05-25 09:05:46 +00:00
txx9wdt.c
w83627hf_wdt.c
w83697hf_wdt.c
w83697ug_wdt.c
w83877f_wdt.c
w83977f_wdt.c
wafer5823wdt.c
wd501p.h
wdrtas.c
wdt285.c
wdt977.c watchdog: fix several MODULE_PARM_DESC strings 2010-05-25 09:03:52 +00:00
wdt_pci.c watchdog: wdt_pci.c: move ids to pci_ids.h 2010-08-08 18:20:38 +00:00
wdt.c watchdog: update/improve/consolidate watchdog driver 2010-05-25 09:05:34 +00:00
wm831x_wdt.c
wm8350_wdt.c [PATCH 2/11] drivers/watchdog: Eliminate a NULL pointer dereference 2010-06-07 15:55:03 +00:00