summaryrefslogtreecommitdiffstats
path: root/fs/udf
diff options
context:
space:
mode:
authorRalf Baechle <ralf@linux-mips.org>2000-07-08 00:53:00 +0000
committerRalf Baechle <ralf@linux-mips.org>2000-07-08 00:53:00 +0000
commitb8553086288629b4efb77e97f5582e08bc50ad65 (patch)
tree0a19bd1c21e148f35c7a0f76baa4f7a056b966b0 /fs/udf
parent75b6d92f2dd5112b02f4e78cf9f35f9825946ef0 (diff)
Merge with 2.4.0-test3-pre4.
Diffstat (limited to 'fs/udf')
-rw-r--r--fs/udf/symlink.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/fs/udf/symlink.c b/fs/udf/symlink.c
index cb575cbf9..8a0dde5e4 100644
--- a/fs/udf/symlink.c
+++ b/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 @@ static int udf_symlink_filler(struct file *file, struct page *page)
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 @@ static int udf_symlink_filler(struct file *file, struct page *page)
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);