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: <200910131440.45623.arnd@arndb.de>
Date:	Tue, 13 Oct 2009 14:40:45 +0200
From:	Arnd Bergmann <arndbergmann@...glemail.com>
To:	Frederic Weisbecker <fweisbec@...il.com>
Cc:	Arnd Bergmann <arndbergmann@...glemail.com>,
	Thomas Gleixner <tglx@...utronix.de>,
	LKML <linux-kernel@...r.kernel.org>,
	Andrew Morton <akpm@...ux-foundation.org>,
	Ingo Molnar <mingo@...e.hu>,
	Peter Zijlstra <peterz@...radead.org>,
	Vincent Sanders <vince@...tec.co.uk>,
	John Kacur <jkacur@...hat.com>,
	Jonathan Corbet <corbet@....net>,
	Christoph Hellwig <hch@...radead.org>,
	"Sven-Thorsten Dietrich" <sven@...bigcorporation.com>,
	Alessio Igor Bogani <abogani@...ware.it>,
	Benjamin Herrenschmidt <benh@...nel.crashing.org>,
	Greg KH <gregkh@...e.de>
Subject: Re: [patch 11/28] nvram: Drop the bkl from nvram_llseek()

On Monday 12 October 2009, Frederic Weisbecker wrote:
> On Sun, Oct 11, 2009 at 11:50:24PM +0200, Arnd Bergmann wrote:
> >
> > There are various *_operations structures that have a .ioctl pointer.
> > While there are a lot of struct file_operations with a locked .ioctl
> > operation, stuff like block_device_operations does not hold the
> > BKL in .ioctl but in .locked_ioctl.
> 
> Oh right. Thanks for the tip.
> 

FWIW, I've done a grep through the current source tree, this should be
the full list of all .ioctl methods in struct file_operations, a total
of 141 instances in 2.6.32-rc4.

When we do a pushdown of the BKL into these functions, we can kill off
the file operation.

	Arnd <><

arch/blackfin/mach-bf561/coreb.c:	.ioctl   = coreb_ioctl,
arch/cris/arch-v10/drivers/ds1302.c:	.ioctl =	rtc_ioctl,
arch/cris/arch-v10/drivers/gpio.c:	.ioctl       = gpio_ioctl,
arch/cris/arch-v10/drivers/i2c.c:	.ioctl    = i2c_ioctl,
arch/cris/arch-v10/drivers/pcf8563.c:	.ioctl = pcf8563_ioctl,
arch/cris/arch-v10/drivers/sync_serial.c:	.ioctl   = sync_serial_ioctl,
arch/cris/arch-v32/drivers/cryptocop.c:	.ioctl =	cryptocop_ioctl
arch/cris/arch-v32/drivers/i2c.c:	.ioctl =    i2c_ioctl,
arch/cris/arch-v32/drivers/mach-a3/gpio.c:	.ioctl       = gpio_ioctl,
arch/cris/arch-v32/drivers/mach-fs/gpio.c:	.ioctl       = gpio_ioctl,
arch/cris/arch-v32/drivers/pcf8563.c:	.ioctl =	pcf8563_ioctl
arch/cris/arch-v32/drivers/sync_serial.c:	.ioctl   = sync_serial_ioctl,
arch/ia64/kernel/perfmon.c:	.ioctl    = pfm_ioctl,
arch/ia64/sn/kernel/sn2/sn_hwperf.c:	.ioctl = sn_hwperf_ioctl,
arch/m68k/bvme6000/rtc.c:	.ioctl =	rtc_ioctl,
arch/m68k/mvme16x/rtc.c:	.ioctl =	rtc_ioctl,
arch/powerpc/kernel/nvram_64.c:	.ioctl =	dev_nvram_ioctl,
arch/sh/boards/mach-landisk/gio.c:      .ioctl = gio_ioctl,     /* ioctl */
arch/um/drivers/harddog_kern.c:	.ioctl		= harddog_ioctl,
arch/um/drivers/hostaudio_kern.c:	.ioctl          = hostaudio_ioctl,
arch/um/drivers/mmapper_kern.c:	.ioctl		= mmapper_ioctl,
drivers/block/pktcdvd.c:	.ioctl	 = pkt_ctl_ioctl,
drivers/bluetooth/hci_vhci.c:	.ioctl		= vhci_ioctl,
drivers/char/apm-emulation.c:	.ioctl		= apm_ioctl,
drivers/char/applicom.c:	.ioctl = ac_ioctl,
drivers/char/ds1620.c:	.ioctl		= ds1620_ioctl,
drivers/char/dtlk.c:	.ioctl		= dtlk_ioctl,
drivers/char/nvram.c:	.ioctl		= nvram_ioctl,
drivers/char/generic_nvram.c:	.ioctl		= nvram_ioctl,
drivers/char/genrtc.c:	.ioctl		= gen_rtc_ioctl,
drivers/char/hpet.c:	.ioctl = hpet_ioctl,
drivers/char/i8k.c:	.ioctl		= i8k_ioctl,
drivers/char/ipmi/ipmi_devintf.c:	.ioctl		= ipmi_ioctl,
drivers/char/ipmi/ipmi_watchdog.c:	.ioctl   = ipmi_ioctl,
drivers/char/istallion.c:	.ioctl		= stli_memioctl,
drivers/char/lp.c:	.ioctl		= lp_ioctl,
drivers/char/nwflash.c:	.ioctl		= flash_ioctl,
drivers/char/raw.c:	.ioctl	=	raw_ioctl,
drivers/char/sonypi.c:	.ioctl		= sonypi_misc_ioctl,
drivers/char/stallion.c:	.ioctl		= stl_memioctl,
drivers/char/toshiba.c:	.ioctl		= tosh_ioctl,
drivers/gpu/drm/i810/i810_dma.c:	.ioctl = drm_ioctl,
drivers/gpu/drm/i810/i810_drv.c:		 .ioctl = drm_ioctl,
drivers/gpu/drm/i830/i830_dma.c:	.ioctl = drm_ioctl,
drivers/gpu/drm/i830/i830_drv.c:		 .ioctl = drm_ioctl,
drivers/gpu/drm/i915/i915_drv.c:		 .ioctl = drm_ioctl,
drivers/gpu/drm/mga/mga_drv.c:		.ioctl = drm_ioctl,
drivers/gpu/drm/r128/r128_drv.c:		.ioctl = drm_ioctl,
drivers/gpu/drm/radeon/radeon_drv.c:		 .ioctl = drm_ioctl,
drivers/gpu/drm/radeon/radeon_drv.c:		 .ioctl = drm_ioctl,
drivers/gpu/drm/savage/savage_drv.c:		 .ioctl = drm_ioctl,
drivers/gpu/drm/sis/sis_drv.c:		 .ioctl = drm_ioctl,
drivers/gpu/drm/tdfx/tdfx_drv.c:		 .ioctl = drm_ioctl,
drivers/gpu/drm/via/via_drv.c:		.ioctl = drm_ioctl,
drivers/gpu/drm/i810/i810_dma.c:	.ioctl = drm_ioctl,
drivers/gpu/drm/i810/i810_drv.c:		 .ioctl = drm_ioctl,
drivers/gpu/drm/i830/i830_dma.c:	.ioctl = drm_ioctl,
drivers/gpu/drm/i830/i830_drv.c:		 .ioctl = drm_ioctl,
drivers/gpu/drm/i915/i915_drv.c:		 .ioctl = drm_ioctl,
drivers/gpu/drm/mga/mga_drv.c:		.ioctl = drm_ioctl,
drivers/gpu/drm/r128/r128_drv.c:		.ioctl = drm_ioctl,
drivers/gpu/drm/radeon/radeon_drv.c:		 .ioctl = drm_ioctl,
drivers/gpu/drm/radeon/radeon_drv.c:		 .ioctl = drm_ioctl,
drivers/gpu/drm/savage/savage_drv.c:		 .ioctl = drm_ioctl,
drivers/gpu/drm/sis/sis_drv.c:		 .ioctl = drm_ioctl,
drivers/gpu/drm/tdfx/tdfx_drv.c:		 .ioctl = drm_ioctl,
drivers/gpu/drm/via/via_drv.c:		.ioctl = drm_ioctl,
drivers/hwmon/fschmd.c:	.ioctl = watchdog_ioctl,
drivers/ide/ide-tape.c:	.ioctl		= idetape_chrdev_ioctl,
drivers/input/misc/hp_sdc_rtc.c:        .ioctl =	hp_sdc_rtc_ioctl,
drivers/isdn/capi/capi.c:	.ioctl		= capi_ioctl,
drivers/isdn/divert/divert_procfs.c:	.ioctl          = isdn_divert_ioctl,
drivers/isdn/i4l/isdn_common.c:	.ioctl		= isdn_ioctl,
drivers/isdn/mISDN/timerdev.c:	.ioctl		= mISDN_ioctl,
drivers/macintosh/ans-lcd.c:	.ioctl	= anslcd_ioctl,
drivers/macintosh/nvram.c:	.ioctl		= nvram_ioctl,
drivers/macintosh/via-pmu.c:	.ioctl		= pmu_ioctl,
drivers/media/dvb/dvb-core/dmxdev.c:	.ioctl = dvb_demux_ioctl,
drivers/media/dvb/dvb-core/dmxdev.c:	.ioctl = dvb_dvr_ioctl,
drivers/media/dvb/dvb-core/dvb_ca_en50221.c:	.ioctl = dvb_ca_en50221_io_ioctl,
drivers/media/dvb/dvb-core/dvb_net.c:	.ioctl = dvb_net_ioctl,
drivers/media/dvb/dvb-core/dvb_frontend.c:	.ioctl		= dvb_generic_ioctl,
drivers/media/dvb/firewire/firedtv-ci.c:	.ioctl		= dvb_generic_ioctl,
drivers/media/dvb/ttpci/av7110.c:	.ioctl		= dvb_generic_ioctl,
drivers/media/dvb/ttpci/av7110_av.c:	.ioctl		= dvb_generic_ioctl,
drivers/media/dvb/ttpci/av7110_av.c:	.ioctl		= dvb_generic_ioctl,
drivers/media/dvb/ttpci/av7110_ca.c:	.ioctl		= dvb_generic_ioctl,
drivers/message/i2o/i2o_config.c:	.ioctl = i2o_cfg_ioctl,
drivers/mtd/mtdchar.c:	.ioctl		= mtd_ioctl,
drivers/net/wan/cosa.c:	.ioctl		= cosa_chardev_ioctl,
drivers/parisc/eisa_eeprom.c:	.ioctl =	eisa_eeprom_ioctl,
drivers/pcmcia/pcmcia_ioctl.c:	.ioctl		= ds_ioctl,
drivers/rtc/rtc-m41t80.c:	.ioctl	= wdt_ioctl,
drivers/s390/char/tape_char.c:	.ioctl = tapechar_ioctl,
drivers/s390/char/vmwatchdog.c:	.ioctl   = &vmwdt_ioctl,
drivers/sbus/char/openprom.c:	.ioctl =	openprom_ioctl,
drivers/scsi/3w-9xxx.c:	.ioctl		= twa_chrdev_ioctl,
drivers/scsi/3w-xxxx.c:	.ioctl		= tw_chrdev_ioctl,
drivers/scsi/aacraid/linit.c:	.ioctl		= aac_cfg_ioctl,
drivers/scsi/dpt_i2o.c:	.ioctl		= adpt_ioctl,
drivers/scsi/gdth.c:    .ioctl   = gdth_ioctl,
drivers/scsi/megaraid.c:	.ioctl		= megadev_ioctl,
drivers/scsi/megaraid/megaraid_mm.c:	.ioctl	= mraid_mm_ioctl,
drivers/scsi/osst.c:	.ioctl =        osst_ioctl,
drivers/scsi/sg.c:	.ioctl = sg_ioctl,
drivers/staging/comedi/comedi_fops.c:	.ioctl = comedi_ioctl,
drivers/staging/poch/poch.c:	.ioctl = poch_ioctl,
drivers/staging/sep/sep_driver.c:	.ioctl = sep_ioctl,
drivers/staging/vme/devices/vme_user.c:        .ioctl = vme_user_ioctl,
drivers/usb/core/devio.c:	.ioctl =	usbdev_ioctl,
drivers/usb/mon/mon_bin.c:	.ioctl =	mon_bin_ioctl,
fs/autofs/root.c:	.ioctl		= autofs_root_ioctl,
fs/autofs4/root.c:	.ioctl		= autofs4_root_ioctl,
fs/coda/pioctl.c:	.ioctl		= coda_pioctl,
fs/coda/psdev.c:	.ioctl		= coda_psdev_ioctl,
fs/ecryptfs/file.c:	.ioctl = ecryptfs_ioctl,
fs/ecryptfs/file.c:	.ioctl = ecryptfs_ioctl,
fs/fat/dir.c:	.ioctl		= fat_dir_ioctl,
fs/fat/file.c:	.ioctl		= fat_generic_ioctl,
fs/hfsplus/dir.c:	.ioctl          = hfsplus_ioctl,
fs/hfsplus/inode.c:	.ioctl          = hfsplus_ioctl,
fs/ncpfs/dir.c:	.ioctl		= ncp_ioctl,
fs/ncpfs/file.c:	.ioctl		= ncp_ioctl,
fs/reiserfs/dir.c:	.ioctl = reiserfs_ioctl,
fs/reiserfs/file.c:	.ioctl = reiserfs_ioctl,
fs/smbfs/dir.c:	.ioctl		= smb_ioctl,
fs/smbfs/file.c:	.ioctl		= smb_ioctl,
fs/udf/dir.c:	.ioctl			= udf_ioctl,
fs/udf/file.c:	.ioctl			= udf_ioctl,
net/sunrpc/cache.c:     .ioctl          = cache_ioctl_procfs, /* for FIONREAD */
net/sunrpc/cache.c:     .ioctl          = cache_ioctl_pipefs, /* for FIONREAD */
net/sunrpc/rpc_pipe.c:	.ioctl		= rpc_pipe_ioctl,
sound/oss/dmasound/dmasound_core.c:	.ioctl		= mixer_ioctl,
sound/oss/dmasound/dmasound_core.c:	.ioctl		= sq_ioctl,
sound/oss/msnd_pinnacle.c:	.ioctl		= dev_ioctl,
sound/oss/sh_dac_audio.c:      .ioctl =	dac_audio_ioctl,
sound/oss/soundcard.c:	.ioctl		= sound_ioctl,
sound/oss/swarm_cs4297a.c:	.ioctl		= cs4297a_ioctl_mixdev,
sound/oss/swarm_cs4297a.c:	.ioctl		= cs4297a_ioctl,
sound/oss/vwsnd.c:	.ioctl =	vwsnd_audio_ioctl,
sound/oss/vwsnd.c:	.ioctl =	vwsnd_mixer_ioctl,
--
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