patch-2.4.0-test4 linux/drivers/sound/emu10k1/midi.c

Next file: linux/drivers/sound/es1370.c
Previous file: linux/drivers/sound/emu10k1/audio.c
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v2.4.0-test3/linux/drivers/sound/emu10k1/midi.c linux/drivers/sound/emu10k1/midi.c
@@ -32,6 +32,8 @@
 
 #define __NO_VERSION__
 #include <linux/module.h>
+#include <linux/sched.h>
+#include <linux/smp_lock.h>
 #include <asm/uaccess.h>
 
 #include "hwaccess.h"
@@ -183,8 +185,10 @@
 static int emu10k1_midi_release(struct inode *inode, struct file *file)
 {
 	struct emu10k1_mididevice *midi_dev = (struct emu10k1_mididevice *) file->private_data;
-	struct emu10k1_card *card = midi_dev->card;
+	struct emu10k1_card *card;
 
+	lock_kernel();
+	card = midi_dev->card;
 	DPF(2, "emu10k1_midi_release()\n");
 
 	if (file->f_mode & FMODE_WRITE) {
@@ -227,6 +231,7 @@
 	card->open_mode &= ~((file->f_mode << FMODE_MIDI_SHIFT) & (FMODE_MIDI_READ | FMODE_MIDI_WRITE));
 	up(&card->open_sem);
 	wake_up_interruptible(&card->open_wait);
+	unlock_kernel();
 
 	return 0;
 }

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)