patch-2.4.0-test4 linux/drivers/block/rd.c

Next file: linux/drivers/char/acquirewdt.c
Previous file: linux/drivers/block/paride/pt.c
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v2.4.0-test3/linux/drivers/block/rd.c linux/drivers/block/rd.c
@@ -59,6 +59,7 @@
 #include <linux/module.h>
 #include <linux/init.h>
 #include <linux/devfs_fs_kernel.h>
+#include <linux/smp_lock.h>
 
 #include <asm/system.h>
 #include <asm/uaccess.h>
@@ -298,11 +299,14 @@
 {
 	extern void free_initrd_mem(unsigned long, unsigned long);
 
-	if (--initrd_users) return 0;
-	blkdev_put(inode->i_bdev, BDEV_FILE);
-	iput(inode);
-	free_initrd_mem(initrd_start, initrd_end);
-	initrd_start = 0;
+	lock_kernel();
+	if (!--initrd_users) {
+		blkdev_put(inode->i_bdev, BDEV_FILE);
+		iput(inode);
+		free_initrd_mem(initrd_start, initrd_end);
+		initrd_start = 0;
+	}
+	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)