patch-2.2.14 linux/fs/umsdos/inode.c

Next file: linux/fs/umsdos/ioctl.c
Previous file: linux/fs/umsdos/README-WIP.txt
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v2.2.13/linux/fs/umsdos/inode.c linux/fs/umsdos/inode.c
@@ -168,7 +168,14 @@
 	} else if (S_ISBLK (inode->i_mode)) {
 		inode->i_op = &blkdev_inode_operations;
 	} else if (S_ISFIFO (inode->i_mode)) {
-		init_fifo (inode);
+	/* if someone is using FIFO, we must not reinitialize it, because
+	   we will destroy its locks, and sleep_on in fifo_open() will
+	   hardlock/oops our kernel! this started happening with
+	   patch-2.2.7. Why did it not happen before ? Maybe we were
+	   never called with i_count > 1 ?
+	*/
+		if (inode->i_count < 2)	
+			init_fifo (inode);
 	}
 }
 
@@ -349,7 +356,7 @@
 	if (!res)
 		goto out_fail;
 
-	printk (KERN_INFO "UMSDOS 0.85 "
+	printk (KERN_INFO "UMSDOS 0.85b "
 		"(compatibility level %d.%d, fast msdos)\n", 
 		UMSDOS_VERSION, UMSDOS_RELEASE);
 

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