linux/drivers
Alexey Dobriyan 99b7623380 proc 2/2: remove struct proc_dir_entry::owner
Setting ->owner as done currently (pde->owner = THIS_MODULE) is racy
as correctly noted at bug #12454. Someone can lookup entry with NULL
->owner, thus not pinning enything, and release it later resulting
in module refcount underflow.

We can keep ->owner and supply it at registration time like ->proc_fops
and ->data.

But this leaves ->owner as easy-manipulative field (just one C assignment)
and somebody will forget to unpin previous/pin current module when
switching ->owner. ->proc_fops is declared as "const" which should give
some thoughts.

->read_proc/->write_proc were just fixed to not require ->owner for
protection.

rmmod'ed directories will be empty and return "." and ".." -- no harm.
And directories with tricky enough readdir and lookup shouldn't be modular.
We definitely don't want such modular code.

Removing ->owner will also make PDE smaller.

So, let's nuke it.

Kudos to Jeff Layton for reminding about this, let's say, oversight.

http://bugzilla.kernel.org/show_bug.cgi?id=12454

Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com>
2009-03-31 01:14:44 +04:00
..
accessibility
acpi proc 2/2: remove struct proc_dir_entry::owner 2009-03-31 01:14:44 +04:00
amba
ata Merge branch 'origin' into devel 2009-03-28 20:29:51 +00:00
atm
auxdisplay
base Merge branch 'core/percpu' into percpu-cpumask-x86-for-linus-2 2009-03-27 17:28:43 +01:00
block proc 2/2: remove struct proc_dir_entry::owner 2009-03-31 01:14:44 +04:00
bluetooth
cdrom
char proc 2/2: remove struct proc_dir_entry::owner 2009-03-31 01:14:44 +04:00
clocksource Merge branch 'core/percpu' into percpu-cpumask-x86-for-linus-2 2009-03-27 17:28:43 +01:00
connector
cpufreq Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/davej/cpufreq 2009-03-26 11:04:08 -07:00
cpuidle
crypto Merge git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6 2009-03-26 11:04:34 -07:00
dca
dio
dma Merge branch 'origin' into devel 2009-03-28 20:29:51 +00:00
edac
eisa Merge branch 'core/percpu' into percpu-cpumask-x86-for-linus-2 2009-03-27 17:28:43 +01:00
firewire
firmware
gpio
gpu Merge branch 'linus' into percpu-cpumask-x86-for-linus-2 2009-03-28 04:26:01 +01:00
hid Merge branch 'bkl-removal' of git://git.lwn.net/linux-2.6 2009-03-26 16:14:02 -07:00
hwmon
i2c Merge commit 'origin/master' into next 2009-03-30 14:04:53 +11:00
ide ide: keep track of number of bytes instead of sectors in struct ide_cmd 2009-03-27 12:46:47 +01:00
idle
ieee1394 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394-2.6 2009-03-27 18:33:56 -07:00
infiniband Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6 2009-03-28 13:30:43 -07:00
input proc 2/2: remove struct proc_dir_entry::owner 2009-03-31 01:14:44 +04:00
isdn proc 2/2: remove struct proc_dir_entry::owner 2009-03-31 01:14:44 +04:00
leds
lguest Merge branch 'core/percpu' into percpu-cpumask-x86-for-linus-2 2009-03-27 17:28:43 +01:00
macintosh
mca
md
media proc 2/2: remove struct proc_dir_entry::owner 2009-03-31 01:14:44 +04:00
memstick
message proc 2/2: remove struct proc_dir_entry::owner 2009-03-31 01:14:44 +04:00
mfd
misc Merge branch 'i2c-for-linus' of git://jdelvare.pck.nerim.net/jdelvare-2.6 2009-03-28 14:04:53 -07:00
mmc Merge branch 'origin' into devel 2009-03-28 20:29:51 +00:00
mtd Merge branch 'devel' of master.kernel.org:/home/rmk/linux-2.6-arm 2009-03-28 14:03:14 -07:00
net proc 2/2: remove struct proc_dir_entry::owner 2009-03-31 01:14:44 +04:00
nubus
of
oprofile
parisc
parport
pci Merge branch 'linus' into x86/core 2009-03-28 22:27:45 +01:00
pcmcia Merge branch 'origin' into devel 2009-03-28 20:29:51 +00:00
platform proc 2/2: remove struct proc_dir_entry::owner 2009-03-31 01:14:44 +04:00
pnp
power
ps3
rapidio
regulator
rtc proc 2/2: remove struct proc_dir_entry::owner 2009-03-31 01:14:44 +04:00
s390 proc 2/2: remove struct proc_dir_entry::owner 2009-03-31 01:14:44 +04:00
sbus
scsi proc 2/2: remove struct proc_dir_entry::owner 2009-03-31 01:14:44 +04:00
serial Merge commit 'origin/master' into next 2009-03-30 14:04:53 +11:00
sh maple: fix Error in kernel-doc notation 2009-03-29 08:12:39 -07:00
sn
spi Merge commit 'origin/master' into next 2009-03-30 14:04:53 +11:00
ssb b43: Add BCM4307 PCI-ID 2009-03-27 20:13:20 -04:00
staging
tc
telephony
thermal
uio
usb Merge branch 'devel' of master.kernel.org:/home/rmk/linux-2.6-arm 2009-03-28 14:03:14 -07:00
uwb
video proc 2/2: remove struct proc_dir_entry::owner 2009-03-31 01:14:44 +04:00
virtio
w1
watchdog Merge commit 'origin/master' into next 2009-03-30 14:04:53 +11:00
xen
zorro
Kconfig
Makefile ide/net: flip the order of SATA and network init 2009-03-28 13:06:16 -07:00