diff options
author | Ralf Baechle <ralf@linux-mips.org> | 2000-07-08 00:53:00 +0000 |
---|---|---|
committer | Ralf Baechle <ralf@linux-mips.org> | 2000-07-08 00:53:00 +0000 |
commit | b8553086288629b4efb77e97f5582e08bc50ad65 (patch) | |
tree | 0a19bd1c21e148f35c7a0f76baa4f7a056b966b0 /fs/udf | |
parent | 75b6d92f2dd5112b02f4e78cf9f35f9825946ef0 (diff) |
Merge with 2.4.0-test3-pre4.
Diffstat (limited to 'fs/udf')
-rw-r--r-- | fs/udf/symlink.c | 4 |
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); |