patch-2.4.0-test3 linux/fs/udf/symlink.c

Next file: linux/fs/udf/udfdecl.h
Previous file: linux/fs/udf/super.c
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v2.4.0-test2/linux/fs/udf/symlink.c linux/fs/udf/symlink.c
@@ -34,6 +34,7 @@
 #include <linux/stat.h>
 #include <linux/malloc.h>
 #include <linux/pagemap.h>
+#include <linux/smp_lock.h>
 #include "udf_i.h"
 
 static void udf_pc_to_char(char *from, int fromlen, char *to)
@@ -84,6 +85,7 @@
 	int err = -EIO;
 	char *p = (char *)kmap(page);
 	
+	lock_kernel();
 	if (UDF_I_ALLOCTYPE(inode) == ICB_FLAG_AD_IN_ICB)
 	{
 		bh = udf_tread(inode->i_sb, inode->i_ino, inode->i_sb->s_blocksize);
@@ -107,11 +109,13 @@
 	udf_pc_to_char(symlink, inode->i_size, p);
 	udf_release_data(bh);
 
+	unlock_kernel();
 	SetPageUptodate(page);
 	kunmap(page);
 	UnlockPage(page);
 	return 0;
 out:
+	unlock_kernel();
 	SetPageError(page);
 	kunmap(page);
 	UnlockPage(page);

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