patch-2.4.0-test4 linux/drivers/usb/joydev.c

Next file: linux/drivers/usb/mdc800.c
Previous file: linux/drivers/usb/hub.c
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v2.4.0-test3/linux/drivers/usb/joydev.c linux/drivers/usb/joydev.c
@@ -44,6 +44,7 @@
 #include <linux/module.h>
 #include <linux/poll.h>
 #include <linux/init.h>
+#include <linux/smp_lock.h>
 
 #define JOYDEV_MINOR_BASE	0
 #define JOYDEV_MINORS		32
@@ -160,8 +161,10 @@
 static int joydev_release(struct inode * inode, struct file * file)
 {
 	struct joydev_list *list = file->private_data;
-	struct joydev_list **listptr = &list->joydev->list;
+	struct joydev_list **listptr;
 
+	lock_kernel();
+	listptr = &list->joydev->list;
 	joydev_fasync(-1, file, 0);
 
 	while (*listptr && (*listptr != list))
@@ -179,6 +182,7 @@
 	}
 
 	kfree(list);
+	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)