diff options
Diffstat (limited to 'fs/hpfs/dir.c')
-rw-r--r-- | fs/hpfs/dir.c | 23 |
1 files changed, 11 insertions, 12 deletions
diff --git a/fs/hpfs/dir.c b/fs/hpfs/dir.c index d32f63a569f7..b3d7c0ddb609 100644 --- a/fs/hpfs/dir.c +++ b/fs/hpfs/dir.c | |||
@@ -6,16 +6,15 @@ | |||
6 | * directory VFS functions | 6 | * directory VFS functions |
7 | */ | 7 | */ |
8 | 8 | ||
9 | #include <linux/smp_lock.h> | ||
10 | #include <linux/slab.h> | 9 | #include <linux/slab.h> |
11 | #include "hpfs_fn.h" | 10 | #include "hpfs_fn.h" |
12 | 11 | ||
13 | static int hpfs_dir_release(struct inode *inode, struct file *filp) | 12 | static int hpfs_dir_release(struct inode *inode, struct file *filp) |
14 | { | 13 | { |
15 | lock_kernel(); | 14 | hpfs_lock(inode->i_sb); |
16 | hpfs_del_pos(inode, &filp->f_pos); | 15 | hpfs_del_pos(inode, &filp->f_pos); |
17 | /*hpfs_write_if_changed(inode);*/ | 16 | /*hpfs_write_if_changed(inode);*/ |
18 | unlock_kernel(); | 17 | hpfs_unlock(inode->i_sb); |
19 | return 0; | 18 | return 0; |
20 | } | 19 | } |
21 | 20 | ||
@@ -30,7 +29,7 @@ static loff_t hpfs_dir_lseek(struct file *filp, loff_t off, int whence) | |||
30 | struct hpfs_inode_info *hpfs_inode = hpfs_i(i); | 29 | struct hpfs_inode_info *hpfs_inode = hpfs_i(i); |
31 | struct super_block *s = i->i_sb; | 30 | struct super_block *s = i->i_sb; |
32 | 31 | ||
33 | lock_kernel(); | 32 | hpfs_lock(s); |
34 | 33 | ||
35 | /*printk("dir lseek\n");*/ | 34 | /*printk("dir lseek\n");*/ |
36 | if (new_off == 0 || new_off == 1 || new_off == 11 || new_off == 12 || new_off == 13) goto ok; | 35 | if (new_off == 0 || new_off == 1 || new_off == 11 || new_off == 12 || new_off == 13) goto ok; |
@@ -43,12 +42,12 @@ static loff_t hpfs_dir_lseek(struct file *filp, loff_t off, int whence) | |||
43 | } | 42 | } |
44 | mutex_unlock(&i->i_mutex); | 43 | mutex_unlock(&i->i_mutex); |
45 | ok: | 44 | ok: |
46 | unlock_kernel(); | 45 | hpfs_unlock(s); |
47 | return filp->f_pos = new_off; | 46 | return filp->f_pos = new_off; |
48 | fail: | 47 | fail: |
49 | mutex_unlock(&i->i_mutex); | 48 | mutex_unlock(&i->i_mutex); |
50 | /*printk("illegal lseek: %016llx\n", new_off);*/ | 49 | /*printk("illegal lseek: %016llx\n", new_off);*/ |
51 | unlock_kernel(); | 50 | hpfs_unlock(s); |
52 | return -ESPIPE; | 51 | return -ESPIPE; |
53 | } | 52 | } |
54 | 53 | ||
@@ -64,7 +63,7 @@ static int hpfs_readdir(struct file *filp, void *dirent, filldir_t filldir) | |||
64 | int c1, c2 = 0; | 63 | int c1, c2 = 0; |
65 | int ret = 0; | 64 | int ret = 0; |
66 | 65 | ||
67 | lock_kernel(); | 66 | hpfs_lock(inode->i_sb); |
68 | 67 | ||
69 | if (hpfs_sb(inode->i_sb)->sb_chk) { | 68 | if (hpfs_sb(inode->i_sb)->sb_chk) { |
70 | if (hpfs_chk_sectors(inode->i_sb, inode->i_ino, 1, "dir_fnode")) { | 69 | if (hpfs_chk_sectors(inode->i_sb, inode->i_ino, 1, "dir_fnode")) { |
@@ -167,7 +166,7 @@ static int hpfs_readdir(struct file *filp, void *dirent, filldir_t filldir) | |||
167 | hpfs_brelse4(&qbh); | 166 | hpfs_brelse4(&qbh); |
168 | } | 167 | } |
169 | out: | 168 | out: |
170 | unlock_kernel(); | 169 | hpfs_unlock(inode->i_sb); |
171 | return ret; | 170 | return ret; |
172 | } | 171 | } |
173 | 172 | ||
@@ -197,10 +196,10 @@ struct dentry *hpfs_lookup(struct inode *dir, struct dentry *dentry, struct name | |||
197 | struct inode *result = NULL; | 196 | struct inode *result = NULL; |
198 | struct hpfs_inode_info *hpfs_result; | 197 | struct hpfs_inode_info *hpfs_result; |
199 | 198 | ||
200 | lock_kernel(); | 199 | hpfs_lock(dir->i_sb); |
201 | if ((err = hpfs_chk_name(name, &len))) { | 200 | if ((err = hpfs_chk_name(name, &len))) { |
202 | if (err == -ENAMETOOLONG) { | 201 | if (err == -ENAMETOOLONG) { |
203 | unlock_kernel(); | 202 | hpfs_unlock(dir->i_sb); |
204 | return ERR_PTR(-ENAMETOOLONG); | 203 | return ERR_PTR(-ENAMETOOLONG); |
205 | } | 204 | } |
206 | goto end_add; | 205 | goto end_add; |
@@ -298,7 +297,7 @@ struct dentry *hpfs_lookup(struct inode *dir, struct dentry *dentry, struct name | |||
298 | 297 | ||
299 | end: | 298 | end: |
300 | end_add: | 299 | end_add: |
301 | unlock_kernel(); | 300 | hpfs_unlock(dir->i_sb); |
302 | d_add(dentry, result); | 301 | d_add(dentry, result); |
303 | return NULL; | 302 | return NULL; |
304 | 303 | ||
@@ -311,7 +310,7 @@ struct dentry *hpfs_lookup(struct inode *dir, struct dentry *dentry, struct name | |||
311 | 310 | ||
312 | /*bail:*/ | 311 | /*bail:*/ |
313 | 312 | ||
314 | unlock_kernel(); | 313 | hpfs_unlock(dir->i_sb); |
315 | return ERR_PTR(-ENOENT); | 314 | return ERR_PTR(-ENOENT); |
316 | } | 315 | } |
317 | 316 | ||