On Wednesday 24 March 2010, Andrew Morton wrote:
Sure, that is certainly the plan.
Regarding the ptrace bits, this is one of a handful of places where the BKL
was put in by someone a really long time ago but with the rest of the
series applied, it becomes evident that there is nothing whatsoever that
it serializes with, so removing the BKL here does not make the situation
worse. It could still be a bug that needs to be fixed by adding a new
serialization method no matter if the BKL is there or not.
Let me give you three separate diffstats. One is for the trivial pushdown of
the BKL into all the ioctl and llseek functions as well as marking all
remaining users as 'depends on BKL' in Kconfig, the second one is for the
TTY layer conversion to the Big TTY Mutex and the third one is all the rest.
Arnd
---
Big TTY Mutex conversion:
drivers/char/Makefile | 2 +
drivers/char/amiserial.c | 16 ++--
drivers/char/cyclades.c | 20 ++--
drivers/char/epca.c | 4 +-
drivers/char/isicom.c | 10 +-
drivers/char/istallion.c | 20 ++--
drivers/char/mxser.c | 10 +-
drivers/char/n_hdlc.c | 16 ++--
drivers/char/n_r3964.c | 10 +-
drivers/char/pty.c | 8 +-
drivers/char/riscom8.c | 8 +-
drivers/char/rocket.c | 8 +-
drivers/char/serial167.c | 4 +-
drivers/char/specialix.c | 10 +-
drivers/char/stallion.c | 12 ++--
drivers/char/sx.c | 12 ++--
drivers/char/synclink.c | 10 ++-
drivers/char/synclink_gt.c | 8 +-
drivers/char/synclinkmp.c | 12 ++--
drivers/char/tty_buffer.c | 2 +-
drivers/char/tty_io.c | 123 +++++++++++++++------------
drivers/char/tty_ioctl.c | 36 ++++----
drivers/char/tty_ldisc.c | 53 +++++++-----
drivers/char/tty_lock.c | 100 ++++++++++++++++++++++
drivers/char/tty_port.c | 6 +-
drivers/char/vc_screen.c | 4 +-
drivers/char/vt.c | 4 +-
drivers/char/vt_ioctl.c | 12 ++--
drivers/isdn/i4l/isdn_common.c | 20 ++--
drivers/isdn/i4l/isdn_tty.c | 8 +-
drivers/net/irda/irtty-sir.c | 5 +-
drivers/net/ppp_generic.c | 29 +++---
drivers/serial/68360serial.c | 4 +-
drivers/serial/crisv10.c | 8 +-
drivers/serial/serial_core.c | 42 +++++-----
drivers/staging/strip/strip.c | 2 +-
drivers/usb/class/cdc-acm.c | 2 +-
drivers/usb/serial/usb-serial.c | 18 ++--
drivers/video/console/vgacon.c | 4 +-
include/linux/init_task.h | 1 +
include/linux/sched.h | 1 +
include/linux/tty.h | 180 +++++++++++++++++++++++++++++++++++++++
kernel/fork.c | 1 +
ioctl/llseek pushdown, Kconfig:
43 files changed, 590 insertions(+), 275 deletions(-)
Documentation/DocBook/kernel-hacking.tmpl | 2 +-
Documentation/filesystems/vfs.txt | 3 +-
arch/arm/kernel/etm.c | 1 -
arch/cris/arch-v10/drivers/ds1302.c | 3 -
arch/cris/arch-v10/drivers/gpio.c | 2 -
arch/cris/arch-v10/drivers/i2c.c | 2 -
arch/cris/arch-v10/drivers/pcf8563.c | 3 -
arch/cris/arch-v10/drivers/sync_serial.c | 4 +-
arch/cris/arch-v32/drivers/cryptocop.c | 4 +-
arch/cris/arch-v32/drivers/i2c.c | 2 -
arch/cris/arch-v32/drivers/mach-a3/gpio.c | 2 -
arch/cris/arch-v32/drivers/mach-fs/gpio.c | 2 -
arch/cris/arch-v32/drivers/pcf8563.c | 5 +-
arch/cris/arch-v32/drivers/sync_serial.c | 4 +-
arch/ia64/kernel/perfmon.c | 2 -
arch/ia64/sn/kernel/sn2/sn_hwperf.c | 2 -
arch/m68k/bvme6000/rtc.c | 2 -
arch/m68k/mvme16x/rtc.c | 2 -
arch/powerpc/platforms/iseries/Kconfig | 1 -
arch/s390/Kconfig | 1 -
arch/um/drivers/harddog_kern.c | 2 -
arch/um/drivers/hostaudio_kern.c | 3 -
arch/um/drivers/mmapper_kern.c | 3 -
arch/x86/Kconfig | 3 +-
arch/x86/kvm/Kconfig | 1 -
drivers/block/DAC960.c | 3 +-
drivers/block/Kconfig | 6 +-
drivers/block/paride/pg.c | 2 -
drivers/block/paride/pt.c | 2 -
drivers/block/pktcdvd.c | 3 -
drivers/char/Kconfig | 25 +-
drivers/char/apm-emulation.c | 2 -
drivers/char/applicom.c | 2 -
drivers/char/ds1302.c | 1 -
drivers/char/ds1620.c | 2 -
drivers/char/dtlk.c | 2 -
drivers/char/generic_nvram.c | 2 -
drivers/char/genrtc.c | 2 -
drivers/char/i8k.c | 2 -
drivers/char/ip2/ip2main.c | 1 -
drivers/char/ipmi/Kconfig | 2 -
drivers/char/ipmi/ipmi_devintf.c | 2 -
drivers/char/ipmi/ipmi_watchdog.c | 2 -
drivers/char/istallion.c | 1 -
drivers/char/lp.c | 1 -
drivers/char/mmtimer.c | 1 -
drivers/char/nwflash.c | 1 -
drivers/char/pcmcia/Kconfig | 4 +-
drivers/char/raw.c | 4 -
drivers/char/rio/rio_linux.c | 1 -
drivers/char/stallion.c | 1 -
drivers/char/sx.c | 1 -
drivers/char/uv_mmtimer.c | 1 -
drivers/char/viotape.c | 1 -
drivers/crypto/Kconfig | 2 +-
drivers/firewire/Kconfig | 1 -
drivers/firewire/core-cdev.c | 2 -
drivers/gpu/drm/Kconfig | 5 +-
drivers/gpu/drm/i810/i810_dma.c | 2 -
drivers/gpu/drm/i830/i830_dma.c | 2 -
drivers/hid/Kconfig | 2 +-
drivers/hid/usbhid/Kconfig | 2 +-
drivers/hid/usbhid/hiddev.c | 3 +-
drivers/hwmon/Kconfig | 2 +-
drivers/hwmon/fschmd.c | 2 -
drivers/ide/Kconfig | 1 -
drivers/ide/ide-tape.c | 1 -
drivers/ieee1394/Kconfig | 6 +-
drivers/ieee1394/dv1394.c | 2 -
drivers/ieee1394/raw1394.c | 2 -
drivers/ieee1394/video1394.c | 4 +-
drivers/infiniband/Kconfig | 6 +-
drivers/infiniband/core/ucm.c | 2 -
drivers/infiniband/core/ucma.c | 2 -
drivers/infiniband/core/user_mad.c | 3 -
drivers/infiniband/core/uverbs_main.c | 11 +-
drivers/input/joystick/Kconfig | 2 +-
drivers/input/misc/Kconfig | 13 +-
drivers/input/misc/hp_sdc_rtc.c | 2 -
drivers/input/misc/uinput.c | 1 -
drivers/input/mouse/Kconfig | 4 +-
drivers/input/serio/Kconfig | 1 -
drivers/input/tablet/Kconfig | 8 +-
drivers/input/touchscreen/Kconfig | 2 +-
drivers/isdn/Kconfig | 2 -
drivers/isdn/capi/Kconfig | 2 +-
drivers/isdn/capi/capi.c | 1 -
drivers/isdn/divert/divert_procfs.c | 2 -
drivers/isdn/hardware/eicon/Kconfig | 2 +-
drivers/isdn/hysdn/Kconfig | 2 +-
drivers/isdn/i4l/Kconfig | 1 -
drivers/isdn/i4l/isdn_common.c | 1 -
drivers/isdn/mISDN/Kconfig | 1 -
drivers/isdn/mISDN/timerdev.c | 3 -
drivers/macintosh/Kconfig | 7 +-
drivers/macintosh/ans-lcd.c | 2 -
drivers/macintosh/nvram.c | 2 -
drivers/macintosh/via-pmu.c | 2 -
drivers/media/Kconfig | 5 +-
drivers/media/dvb/bt8xx/Kconfig | 2 +-
drivers/media/dvb/bt8xx/dst_ca.c | 1 -
drivers/media/dvb/dvb-core/dmxdev.c | 3 -
drivers/media/dvb/dvb-core/dvb_ca_en50221.c | 3 -
drivers/media/dvb/dvb-core/dvb_frontend.c | 5 +-
drivers/media/dvb/dvb-core/dvb_net.c | 3 -
drivers/media/dvb/firewire/Kconfig | 2 +-
drivers/media/dvb/firewire/firedtv-ci.c | 3 -
drivers/media/dvb/ttpci/Kconfig | 2 +-
drivers/media/dvb/ttpci/av7110.c | 3 -
drivers/media/dvb/ttpci/av7110_av.c | 5 -
drivers/media/dvb/ttpci/av7110_ca.c | 3 -
drivers/media/video/Kconfig | 13 +-
drivers/media/video/cpia.c | 2 -
drivers/media/video/v4l2-dev.c | 2 -
drivers/message/fusion/Kconfig | 2 +-
drivers/message/i2o/Kconfig | 2 +-
drivers/misc/Kconfig | 2 +-
drivers/mtd/Kconfig | 1 -
drivers/mtd/mtdchar.c | 1 -
drivers/mtd/ubi/Kconfig | 2 +-
drivers/mtd/ubi/cdev.c | 2 -
drivers/net/Kconfig | 1 -
drivers/net/appletalk/Kconfig | 1 -
drivers/net/ppp_generic.c | 4 +-
drivers/net/wan/Kconfig | 2 +-
drivers/net/wireless/Kconfig | 4 +-
drivers/net/wireless/airo.c | 9 -
drivers/net/wireless/ray_cs.c | 3 -
drivers/pci/hotplug/Kconfig | 2 +-
drivers/pcmcia/Kconfig | 3 +-
drivers/platform/x86/Kconfig | 1 -
drivers/pnp/isapnp/Kconfig | 2 +-
drivers/rtc/Kconfig | 1 -
drivers/rtc/rtc-m41t80.c | 1 -
drivers/s390/block/Kconfig | 2 +-
drivers/s390/char/Kconfig | 2 +-
drivers/s390/char/fs3270.c | 1 -
drivers/s390/char/tape_char.c | 2 +-
drivers/s390/cio/chsc_sch.c | 2 -
drivers/s390/crypto/zcrypt_api.c | 1 -
drivers/s390/scsi/zfcp_cfdc.c | 2 -
drivers/sbus/char/envctrl.c | 1 -
drivers/sbus/char/openprom.c | 1 -
drivers/scsi/3w-9xxx.c | 2 -
drivers/scsi/3w-sas.c | 2 -
drivers/scsi/3w-xxxx.c | 2 -
drivers/scsi/Kconfig | 28 +-
drivers/scsi/aacraid/linit.c | 1 -
drivers/scsi/dpt_i2o.c | 2 -
drivers/scsi/gdth.c | 2 -
drivers/scsi/megaraid.c | 2 -
drivers/scsi/megaraid/Kconfig.megaraid | 6 +-
drivers/scsi/megaraid/megaraid_mm.c | 2 -
drivers/scsi/megaraid/megaraid_sas.c | 1 -
drivers/scsi/mpt2sas/Kconfig | 2 +-
drivers/scsi/mpt2sas/mpt2sas_ctl.c | 1 -
drivers/scsi/osd/Kconfig | 2 +-
drivers/scsi/osd/osd_uld.c | 2 -
drivers/scsi/osst.c | 2 -
drivers/scsi/pmcraid.c | 2 -
drivers/scsi/st.c | 1 -
drivers/spi/spidev.c | 2 -
drivers/staging/comedi/comedi_fops.c | 2 -
drivers/staging/dream/pmem.c | 3 -
drivers/staging/dream/qdsp5/audio_aac.c | 2 -
drivers/staging/dream/qdsp5/audio_mp3.c | 2 -
drivers/staging/poch/poch.c | 3 -
drivers/staging/sep/sep_driver.c | 2 -
drivers/staging/vme/devices/vme_user.c | 2 -
drivers/telephony/Kconfig | 2 +-
drivers/telephony/ixj.c | 1 -
drivers/usb/Kconfig | 2 +-
drivers/usb/class/Kconfig | 1 -
drivers/usb/class/usblp.c | 2 -
drivers/usb/gadget/Kconfig | 2 -
drivers/usb/gadget/printer.c | 1 -
drivers/usb/host/Kconfig | 2 +-
drivers/usb/misc/Kconfig | 8 +-
drivers/usb/misc/idmouse.c | 2 -
drivers/usb/misc/iowarrior.c | 1 -
drivers/usb/misc/rio500.c | 1 -
drivers/usb/misc/sisusbvga/Kconfig | 2 +-
fs/adfs/Kconfig | 1 -
fs/afs/Kconfig | 1 -
fs/autofs/Kconfig | 1 -
fs/autofs/root.c | 1 -
fs/autofs4/Kconfig | 1 -
fs/autofs4/dev-ioctl.c | 2 -
fs/btrfs/super.c | 1 -
fs/coda/Kconfig | 1 -
fs/coda/pioctl.c | 3 -
fs/coda/psdev.c | 2 -
fs/ecryptfs/Kconfig | 1 -
fs/ecryptfs/file.c | 2 -
fs/ecryptfs/miscdev.c | 2 -
fs/fat/Kconfig | 3 -
fs/freevxfs/Kconfig | 1 -
fs/hfsplus/Kconfig | 1 -
fs/hfsplus/dir.c | 2 -
fs/hfsplus/inode.c | 2 -
fs/hpfs/Kconfig | 1 -
fs/ioctl.c | 11 +-
fs/isofs/Kconfig | 1 -
fs/jffs2/Kconfig | 1 -
fs/ncpfs/Kconfig | 1 -
fs/ncpfs/dir.c | 2 -
fs/ncpfs/file.c | 1 -
fs/nfs/Kconfig | 2 +-
fs/nfsd/Kconfig | 1 -
fs/ocfs2/Kconfig | 1 -
fs/qnx4/Kconfig | 1 -
fs/read_write.c | 34 +
fs/reiserfs/Kconfig | 1 -
fs/smbfs/Kconfig | 1 -
fs/smbfs/dir.c | 2 -
fs/smbfs/file.c | 1 -
fs/squashfs/Kconfig | 1 -
fs/udf/Kconfig | 1 -
fs/udf/dir.c | 2 -
fs/udf/file.c | 1 -
fs/ufs/Kconfig | 2 +-
include/linux/fs.h | 5 +
kernel/power/Kconfig | 2 +-
lib/Kconfig.debug | 2 +-
lib/kernel_lock.c | 37 +-
net/bluetooth/hidp/Kconfig | 1 -
net/ipx/Kconfig | 1 -
net/irda/Kconfig | 2 +-
net/irda/irnet/Kconfig | 2 +-
net/socket.c | 1 -
net/sunrpc/Kconfig | 4 +-
net/wanrouter/Kconfig | 2 +-
net/x25/Kconfig | 2 +-
sound/Kconfig | 2 +-
sound/core/control.c | 2 -
sound/core/oss/pcm_oss.c | 2 -
sound/core/pcm_native.c | 2 -
sound/core/seq/seq_clientmgr.c | 2 -
sound/oss/au1550_ac97.c | 30 +-
sound/oss/dmasound/dmasound_core.c | 2 -
sound/oss/msnd_pinnacle.c | 2 -
sound/oss/sh_dac_audio.c | 3 -
sound/oss/swarm_cs4297a.c | 3 -
sound/oss/vwsnd.c | 2 -
sound/soc/soc-core.c | 2 -
virt/kvm/kvm_main.c | 1 -
248 files changed, 190 insertions(+), 516 deletions(-)
The rest:
arch/arm/lib/uaccess_with_memcpy.c | 1 +
arch/x86/configs/x86_64_defconfig | 29 +-
arch/x86/kernel/microcode_core.c | 6 +-
block/bsg.c | 2 -
block/compat_ioctl.c | 8 +-
block/ioctl.c | 24 +-
drivers/block/DAC960.c | 4 +-
drivers/block/aoe/aoechr.c | 6 +-
drivers/block/cciss.c | 4 +-
drivers/block/paride/pg.c | 4 +-
drivers/block/paride/pt.c | 16 +-
drivers/char/briq_panel.c | 1 +
drivers/char/dsp56k.c | 1 +
drivers/char/hpet.c | 96 +++--
drivers/char/mwave/mwavedd.c | 1 +
drivers/char/nvram.c | 7 +-
drivers/char/pcmcia/cm4000_cs.c | 1 +
drivers/char/pcmcia/cm4040_cs.c | 1 +
drivers/char/random.c | 2 +
drivers/char/snsc.c | 1 +
drivers/char/tlclk.c | 1 +
drivers/char/toshiba.c | 1 +
drivers/char/xilinx_hwicap/xilinx_hwicap.c | 1 +
drivers/gpu/vga/vgaarb.c | 4 +-
drivers/hid/hidraw.c | 1 +
drivers/input/serio/serio_raw.c | 1 +
drivers/isdn/capi/capifs.c | 10 +-
drivers/md/dm-ioctl.c | 2 +
drivers/media/dvb/dvb-core/dvbdev.c | 1 +
drivers/misc/phantom.c | 1 +
drivers/pci/proc.c | 4 +-
drivers/pcmcia/pcmcia_ioctl.c | 23 +-
drivers/sbus/char/display7seg.c | 1 +
drivers/sbus/char/jsflash.c | 20 +-
drivers/scsi/aacraid/linit.c | 1 +
drivers/scsi/ch.c | 1 +
drivers/scsi/sg.c | 22 +-
drivers/usb/core/file.c | 1 +
drivers/usb/core/inode.c | 5 +
drivers/usb/gadget/inode.c | 12 +-
drivers/usb/misc/usblcd.c | 1 +
drivers/usb/mon/mon_bin.c | 14 +-
drivers/watchdog/cpwd.c | 1 +
fs/adfs/super.c | 8 +-
fs/affs/super.c | 14 +-
fs/afs/super.c | 5 +
fs/autofs/root.c | 67 +++-
fs/autofs4/root.c | 69 +++-
fs/bad_inode.c | 4 +
fs/bfs/inode.c | 7 +-
fs/block_dev.c | 20 +-
fs/cifs/cifsfs.c | 9 +-
fs/coda/inode.c | 8 +-
fs/compat_ioctl.c | 43 +--
fs/ecryptfs/main.c | 4 +
fs/exec.c | 6 -
fs/exofs/super.c | 1 -
fs/ext2/inode.c | 5 +-
fs/ext2/super.c | 58 ++-
fs/ext3/super.c | 12 -
fs/ext4/super.c | 11 -
fs/fat/dir.c | 11 +-
fs/fat/fat.h | 2 +-
fs/fat/file.c | 33 ++-
fs/fat/namei_msdos.c | 7 +-
fs/fat/namei_vfat.c | 7 +-
fs/freevxfs/vxfs_lookup.c | 1 +
fs/freevxfs/vxfs_super.c | 7 +-
fs/hfs/super.c | 6 +-
fs/hfsplus/super.c | 5 -
fs/hpfs/super.c | 8 +-
fs/hppfs/hppfs.c | 2 +-
fs/ioctl.c | 2 +
fs/isofs/dir.c | 1 +
fs/isofs/inode.c | 8 +-
fs/jffs2/super.c | 11 +-
fs/jfs/super.c | 22 +-
fs/locks.c | 110 +++--
fs/namespace.c | 2 -
fs/ncpfs/inode.c | 8 +-
fs/nfs/super.c | 24 +
fs/nilfs2/ioctl.c | 1 -
fs/nilfs2/super.c | 10 -
fs/ntfs/super.c | 24 +-
fs/ocfs2/stack_user.c | 1 +
fs/ocfs2/super.c | 5 +
fs/proc/base.c | 10 +-
fs/proc/inode.c | 8 +-
fs/qnx4/dir.c | 1 +
fs/qnx4/inode.c | 8 +-
fs/read_write.c | 8 +
fs/reiserfs/super.c | 4 +
fs/smbfs/inode.c | 5 +
fs/squashfs/super.c | 6 +
fs/super.c | 3 -
fs/udf/super.c | 8 +-
fs/ufs/super.c | 5 +
include/linux/auto_fs.h | 1 +
include/linux/blkdev.h | 6 +
include/linux/ext2_fs_sb.h | 6 +
include/linux/fs.h | 2 +
include/linux/sched.h | 2 +
include/linux/smp_lock.h | 57 ++-
init/main.c | 5 -
kernel/cgroup.c | 4 -
kernel/perf_event.c | 2 +
kernel/ptrace.c | 10 -
kernel/sched.c | 17 +
kernel/trace/blktrace.c | 14 +-
kernel/trace/trace.c | 8 -
lib/Kconfig.debug | 17 +
lib/Makefile | 4 +
lib/kernel_lock.c | 104 +-----
lib/kernel_lock_core.c | 307 +++++++++++++
net/sunrpc/cache.c | 30 +-
net/sunrpc/rpc_pipe.c | 9 +-
sound/core/timer.c | 5 +-
sound/sound_core.c | 1 +
virt/kvm/kvm_main.c | 6 +
120 files changed, 1156 insertions(+), 540 deletions(-)
--