linux/sound/core
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
..
oss Merge branch 'bkl-removal' of git://git.lwn.net/linux-2.6 2009-03-26 16:14:02 -07:00
seq ALSA: Add missing KERN_* prefix to printk in sound/core 2009-02-05 16:00:49 +01:00
control_compat.c ALSA: Kill snd_assert() in sound/core/* 2008-08-13 11:46:35 +02:00
control.c Rationalize fasync return values 2009-03-16 08:34:35 -06:00
device.c ALSA: Print function symbol in the error messages 2008-10-16 16:17:30 +02:00
hrtimer.c Merge branch 'timers-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2008-12-30 16:16:21 -08:00
hwdep_compat.c [PATCH] hwdep_compat missed __user annotations 2006-10-10 15:37:21 -07:00
hwdep.c ALSA: hwdep - Make open callback optional 2009-02-05 09:10:20 +01:00
info_oss.c ALSA: Kill snd_assert() in sound/core/* 2008-08-13 11:46:35 +02:00
info.c proc 2/2: remove struct proc_dir_entry::owner 2009-03-31 01:14:44 +04:00
init.c Merge branch 'topic/ctl-list-cleanup' into for-linus 2009-03-24 00:35:45 +01:00
isadma.c [ALSA] Remove sound/driver.h 2008-01-31 17:29:48 +01:00
jack.c Merge branch 'topic/jack' into for-linus 2009-03-24 00:35:43 +01:00
Kconfig ALSA: Fix a typo in Kconfig 2008-10-29 16:08:01 +01:00
Makefile ALSA: Add hrtimer backend for ALSA timer interface 2008-10-24 18:16:50 +02:00
memalloc.c Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/torvalds/linux-2.6 2008-10-11 12:39:35 -07:00
memory.c [ALSA] Remove sound/driver.h 2008-01-31 17:29:48 +01:00
misc.c ALSA: Add subdevice_mask field to quirk entries 2009-02-09 17:19:11 +01:00
pcm_compat.c ALSA: Kill snd_assert() in sound/core/* 2008-08-13 11:46:35 +02:00
pcm_lib.c ALSA: pcm - Safer boundary checks 2009-03-20 16:26:15 +01:00
pcm_memory.c ALSA: Allocate larger pages in sgbuf 2008-08-25 09:57:38 +02:00
pcm_misc.c sound: add missing pcm kernel-doc 2008-10-18 11:05:36 +02:00
pcm_native.c Merge branch 'bkl-removal' of git://git.lwn.net/linux-2.6 2009-03-26 16:14:02 -07:00
pcm_timer.c ALSA: Remove unneeded snd_pcm_substream.timer_lock 2009-03-09 14:02:00 +01:00
pcm.c Merge branch 'topic/misc' into for-linus 2009-03-24 00:35:50 +01:00
rawmidi_compat.c
rawmidi.c ALSA: rawmidi - Refactor rawmidi open/close codes 2009-03-09 15:17:23 +01:00
rtctimer.c ALSA: hda - Convert from takslet_hi_schedule() to tasklet_schedule() 2008-12-18 12:17:55 +01:00
sgbuf.c ALSA: Fix vunmap and free order in snd_free_sgbuf_pages() 2009-03-18 08:04:01 +01:00
sound_oss.c ALSA: Kill snd_assert() in sound/core/* 2008-08-13 11:46:35 +02:00
sound.c Check fops_get() return value 2009-01-06 15:59:11 -08:00
timer_compat.c ALSA: Kill snd_assert() in sound/core/* 2008-08-13 11:46:35 +02:00
timer.c Rationalize fasync return values 2009-03-16 08:34:35 -06:00
vmaster.c ALSA: Add kernel-doc comments to vmaster stuff 2009-03-09 15:10:01 +01:00