On Thu, Jun 03, 2010 at 02:13:15AM +0200, Arnd Bergmann wrote: > 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. > > 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@xxxxxxxx> > --- > arch/cris/arch-v10/drivers/eeprom.c | 2 - > arch/cris/arch-v10/drivers/i2c.c | 2 - > arch/cris/arch-v32/drivers/cryptocop.c | 2 - > arch/cris/arch-v32/drivers/i2c.c | 2 - > drivers/block/paride/pg.c | 7 ++-- > drivers/block/paride/pt.c | 19 ++++++------ > drivers/char/apm-emulation.c | 11 ++++--- > drivers/char/applicom.c | 9 +++-- > drivers/char/ds1302.c | 15 +++++---- > drivers/char/ds1620.c | 8 ++-- > drivers/char/dsp56k.c | 27 +++++++++-------- > drivers/char/dtlk.c | 8 ++-- > drivers/char/generic_nvram.c | 7 ++-- > drivers/char/genrtc.c | 13 ++++---- > drivers/char/i8k.c | 7 ++-- > drivers/char/ip2/ip2main.c | 8 ++-- > drivers/char/ipmi/ipmi_devintf.c | 14 ++++---- > drivers/char/ipmi/ipmi_watchdog.c | 8 ++-- > drivers/char/lp.c | 15 +++++---- > drivers/char/mbcs.c | 8 ++-- > drivers/char/mmtimer.c | 7 ++-- > drivers/char/mwave/mwavedd.c | 44 ++++++++++++++-------------- > drivers/char/nvram.c | 11 ++++--- > drivers/char/nwflash.c | 12 ++++---- > drivers/char/pcmcia/cm4000_cs.c | 11 ++++--- > drivers/char/pcmcia/cm4040_cs.c | 7 ++-- > drivers/char/ppdev.c | 8 ++-- > drivers/char/rio/rio_linux.c | 7 ++-- > drivers/char/snsc.c | 9 +++-- > drivers/char/toshiba.c | 9 +++-- > drivers/char/viotape.c | 11 ++++--- > drivers/char/xilinx_hwicap/xilinx_hwicap.c | 6 ++-- > drivers/hwmon/fschmd.c | 6 ++-- > drivers/hwmon/w83793.c | 6 ++-- > drivers/input/misc/hp_sdc_rtc.c | 7 ++-- > drivers/isdn/capi/capi.c | 6 ++-- > drivers/isdn/divert/divert_procfs.c | 7 ++-- > drivers/isdn/hardware/eicon/divamnt.c | 7 ++-- > drivers/isdn/hardware/eicon/divasi.c | 2 - > drivers/isdn/hardware/eicon/divasmain.c | 2 - > drivers/isdn/hysdn/hysdn_procconf.c | 21 +++++++------ > drivers/isdn/hysdn/hysdn_proclog.c | 15 +++++---- > drivers/isdn/i4l/isdn_common.c | 27 +++++++++-------- > drivers/isdn/mISDN/timerdev.c | 7 ++-- > drivers/macintosh/adb.c | 10 +++--- > drivers/macintosh/smu.c | 6 ++-- > drivers/macintosh/via-pmu.c | 11 ++++--- > drivers/media/dvb/bt8xx/dst_ca.c | 7 ++-- > drivers/media/video/cx88/cx88-blackbird.c | 13 ++++---- > drivers/media/video/dabusb.c | 18 ++++++------ > drivers/media/video/se401.c | 9 +++-- > drivers/media/video/stradis.c | 9 +++-- > drivers/media/video/stv680.c | 6 ++-- > drivers/media/video/usbvideo/vicam.c | 14 ++++---- > drivers/message/fusion/mptctl.c | 15 +++++---- > drivers/message/i2o/i2o_config.c | 23 +++++++------- > drivers/misc/phantom.c | 11 ++++--- > drivers/mtd/mtdchar.c | 15 +++++---- > drivers/net/ppp_generic.c | 19 ++++++------ > drivers/net/wan/cosa.c | 10 +++--- > drivers/pci/hotplug/cpqphp_sysfs.c | 13 ++++---- > drivers/rtc/rtc-m41t80.c | 13 ++++---- > drivers/sbus/char/display7seg.c | 8 ++-- > drivers/sbus/char/envctrl.c | 2 - > drivers/sbus/char/flash.c | 15 +++++---- > drivers/sbus/char/openprom.c | 15 +++++---- > drivers/sbus/char/uctrl.c | 7 ++-- > drivers/scsi/3w-9xxx.c | 7 ++-- > drivers/scsi/3w-sas.c | 7 ++-- > drivers/scsi/3w-xxxx.c | 9 ++--- > drivers/scsi/aacraid/linit.c | 15 +++++---- > drivers/scsi/ch.c | 8 ++-- > drivers/scsi/dpt_i2o.c | 18 ++++++------ > drivers/scsi/gdth.c | 11 ++++--- > drivers/scsi/megaraid.c | 8 ++-- > drivers/scsi/megaraid/megaraid_mm.c | 8 ++-- > drivers/scsi/megaraid/megaraid_sas.c | 2 - > drivers/scsi/mpt2sas/mpt2sas_ctl.c | 11 ++++--- > drivers/scsi/osst.c | 15 +++++---- > drivers/scsi/scsi_tgt_if.c | 2 - > drivers/staging/crystalhd/crystalhd_lnx.c | 9 +++-- > drivers/staging/dt3155/dt3155_drv.c | 7 ++-- > drivers/staging/vme/devices/vme_user.c | 7 ++-- > drivers/telephony/ixj.c | 7 ++-- > drivers/usb/gadget/printer.c | 7 ++-- > drivers/usb/misc/iowarrior.c | 15 +++++---- > drivers/usb/misc/rio500.c | 15 +++++---- > drivers/usb/misc/usblcd.c | 16 +++++----- > drivers/watchdog/cpwd.c | 15 +++++---- > fs/hfsplus/ioctl.c | 11 ++++--- > net/wanrouter/wanmain.c | 7 ++-- > net/wanrouter/wanproc.c | 7 ++-- > 92 files changed, 496 insertions(+), 464 deletions(-) Nice. If you could split the patchset, even by grouping some drivers from the same family in the same patches, I can host the orphans. -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html