patch-2.4.0-test2 linux/drivers/sgi/char/shmiq.c

Next file: linux/drivers/sound/724hwmcode.h
Previous file: linux/drivers/sgi/char/graphics.c
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v2.4.0-test1/linux/drivers/sgi/char/shmiq.c linux/drivers/sgi/char/shmiq.c
@@ -118,8 +118,7 @@
 		e->data.device, e->data.which, e->data.type, e->data.flags);
 	s->tail = tail_next;
 	shmiqs [device].tail = tail_next;
-	if (shmiqs [device].fasync)
-		kill_fasync (shmiqs [device].fasync, SIGIO, POLL_IN);
+	kill_fasync (&shmiqs [device].fasync, SIGIO, POLL_IN);
 	wake_up_interruptible (&shmiqs [device].proc_list);
 }
 
@@ -279,8 +278,10 @@
 			return -EINVAL;
 		}
 		s = req.arg * sizeof (struct shmqevent) + sizeof (struct sharedMemoryInputQueue);
-		v = sys_munmap (vaddr, s);
+		down(&current->mm->mmap_sem);
+		do_munmap (current->mm, vaddr, s);
 		do_mmap (filp, vaddr, s, PROT_READ | PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 0);
+		up(&current->mm->mmap_sem);
 		shmiqs [minor].events = req.arg;
 		shmiqs [minor].mapped = 1;
 		return 0;
@@ -445,11 +446,11 @@
 {
 	printk ("SHMIQ setup\n");
 	devfs_register_chrdev(SHMIQ_MAJOR, "shmiq", &shmiq_fops);
-	devfs_register (NULL, "shmiq", 0, DEVFS_FL_DEFAULT,
-			SHMIQ_MAJOR, 0, S_IFCHR | S_IRUSR | S_IWUSR, 0, 0,
+	devfs_register (NULL, "shmiq", DEVFS_FL_DEFAULT,
+			SHMIQ_MAJOR, 0, S_IFCHR | S_IRUSR | S_IWUSR,
 			&shmiq_fops, NULL);
 	devfs_register_series (NULL, "qcntl%u", 2, DEVFS_FL_DEFAULT,
 			       SHMIQ_MAJOR, 1,
-			       S_IFCHR | S_IRUSR | S_IWUSR, 0, 0,
+			       S_IFCHR | S_IRUSR | S_IWUSR,
 			       &shmiq_fops, NULL);
 }

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