diff options
author | Karsten Wiese <fzu@wemgehoertderstaat.de> | 2006-10-06 16:08:27 +0200 |
---|---|---|
committer | Jaroslav Kysela <perex@suse.cz> | 2006-10-06 20:23:04 +0200 |
commit | a9edfc60227a1dc5c741666ff252a6055b73b184 (patch) | |
tree | 15993e126624ec9e05f33f957ee4f69bd4787220 /sound/core/rawmidi.c | |
parent | 4130d59b1ac6e32c130bd59dbce5eb30fede0197 (diff) |
[ALSA] Handle file operations during snd_card disconnects using static file->f_op
Alsa used to kmalloc one file->f_op per file per disconnecting snd_card.
This led to oopses sometimes when file->f_op was freed before __fput()
finished.
Patch adds a virtual device for disconnect: VDD.
VDD consists of:
LIST_HEAD(shutdown_files)
protected by DEFINE_SPINLOCK(shutdown_mutex)
static struct file_operations snd_shutdown_f_ops
and functions assigned to it
Additions to struct snd_monitor_file
to specify if instance is hidden by VDD or not.
A VDD's instance is
created in snd_card_disconnect() under the card->files_lock.
cleaned up in snd_card_file_remove() under the card->files_lock.
Signed-off-by: Karsten Wiese <fzu@wemgehoertderstaat.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Jaroslav Kysela <perex@suse.cz>
Diffstat (limited to 'sound/core/rawmidi.c')
0 files changed, 0 insertions, 0 deletions