lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20100603003512.GC5164@nowhere>
Date:	Thu, 3 Jun 2010 02:35:13 +0200
From:	Frederic Weisbecker <fweisbec@...il.com>
To:	Arnd Bergmann <arnd@...db.de>
Cc:	linux-kernel@...r.kernel.org, linux-usb@...r.kernel.org,
	John Kacur <jkacur@...hat.com>, Ingo Molnar <mingo@...e.hu>,
	Jan Blunck <jblunck@...e.de>
Subject: Re: [RFC 1/5] BKL: autoconvert trivial users to private mutex

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@...db.de>
> ---
>  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-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ