diff options
| author | Alessio Igor Bogani <abogani@texware.it> | 2010-11-16 12:40:49 -0500 |
|---|---|---|
| committer | Jan Kara <jack@suse.cz> | 2011-01-06 11:03:57 -0500 |
| commit | 9db9f9e31d7661dff35a75ed01ff9fc0d6acdaf8 (patch) | |
| tree | 8e95c6f73b86b6f9e2089f61c9c964f44f08558a | |
| parent | 7db09be629033b79792a1bf18f505f5f15914395 (diff) | |
udf: Remove unnecessary bkl usages
The udf_readdir(), udf_lookup(), udf_create(), udf_mknod(), udf_mkdir(),
udf_rmdir(), udf_link(), udf_get_parent() and udf_unlink() seems already
adequately protected by i_mutex held by VFS invoking calls. The udf_rename()
instead should be already protected by lock_rename again by VFS. The
udf_ioctl(), udf_fill_super() and udf_evict_inode() don't requires any further
protection.
This work was supported by a hardware donation from the CE Linux Forum.
Signed-off-by: Alessio Igor Bogani <abogani@texware.it>
Signed-off-by: Jan Kara <jack@suse.cz>
| -rw-r--r-- | fs/udf/dir.c | 5 | ||||
| -rw-r--r-- | fs/udf/file.c | 4 | ||||
| -rw-r--r-- | fs/udf/inode.c | 3 | ||||
| -rw-r--r-- | fs/udf/namei.c | 27 | ||||
| -rw-r--r-- | fs/udf/super.c | 9 |
5 files changed, 1 insertions, 47 deletions
diff --git a/fs/udf/dir.c b/fs/udf/dir.c index 51552bf50225..eb8bfe2b89a5 100644 --- a/fs/udf/dir.c +++ b/fs/udf/dir.c | |||
| @@ -30,7 +30,6 @@ | |||
| 30 | #include <linux/errno.h> | 30 | #include <linux/errno.h> |
| 31 | #include <linux/mm.h> | 31 | #include <linux/mm.h> |
| 32 | #include <linux/slab.h> | 32 | #include <linux/slab.h> |
| 33 | #include <linux/smp_lock.h> | ||
| 34 | #include <linux/buffer_head.h> | 33 | #include <linux/buffer_head.h> |
| 35 | 34 | ||
| 36 | #include "udf_i.h" | 35 | #include "udf_i.h" |
| @@ -190,18 +189,14 @@ static int udf_readdir(struct file *filp, void *dirent, filldir_t filldir) | |||
| 190 | struct inode *dir = filp->f_path.dentry->d_inode; | 189 | struct inode *dir = filp->f_path.dentry->d_inode; |
| 191 | int result; | 190 | int result; |
| 192 | 191 | ||
| 193 | lock_kernel(); | ||
| 194 | |||
| 195 | if (filp->f_pos == 0) { | 192 | if (filp->f_pos == 0) { |
| 196 | if (filldir(dirent, ".", 1, filp->f_pos, dir->i_ino, DT_DIR) < 0) { | 193 | if (filldir(dirent, ".", 1, filp->f_pos, dir->i_ino, DT_DIR) < 0) { |
| 197 | unlock_kernel(); | ||
| 198 | return 0; | 194 | return 0; |
| 199 | } | 195 | } |
| 200 | filp->f_pos++; | 196 | filp->f_pos++; |
| 201 | } | 197 | } |
| 202 | 198 | ||
| 203 | result = do_udf_readdir(dir, filp, filldir, dirent); | 199 | result = do_udf_readdir(dir, filp, filldir, dirent); |
| 204 | unlock_kernel(); | ||
| 205 | return result; | 200 | return result; |
| 206 | } | 201 | } |
| 207 | 202 | ||
diff --git a/fs/udf/file.c b/fs/udf/file.c index df0c5561cc7e..4e3bbd81b57b 100644 --- a/fs/udf/file.c +++ b/fs/udf/file.c | |||
| @@ -32,7 +32,6 @@ | |||
| 32 | #include <linux/string.h> /* memset */ | 32 | #include <linux/string.h> /* memset */ |
| 33 | #include <linux/capability.h> | 33 | #include <linux/capability.h> |
| 34 | #include <linux/errno.h> | 34 | #include <linux/errno.h> |
| 35 | #include <linux/smp_lock.h> | ||
| 36 | #include <linux/pagemap.h> | 35 | #include <linux/pagemap.h> |
| 37 | #include <linux/buffer_head.h> | 36 | #include <linux/buffer_head.h> |
| 38 | #include <linux/aio.h> | 37 | #include <linux/aio.h> |
| @@ -149,8 +148,6 @@ long udf_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) | |||
| 149 | long old_block, new_block; | 148 | long old_block, new_block; |
| 150 | int result = -EINVAL; | 149 | int result = -EINVAL; |
| 151 | 150 | ||
| 152 | lock_kernel(); | ||
| 153 | |||
| 154 | if (file_permission(filp, MAY_READ) != 0) { | 151 | if (file_permission(filp, MAY_READ) != 0) { |
| 155 | udf_debug("no permission to access inode %lu\n", inode->i_ino); | 152 | udf_debug("no permission to access inode %lu\n", inode->i_ino); |
| 156 | result = -EPERM; | 153 | result = -EPERM; |
| @@ -196,7 +193,6 @@ long udf_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) | |||
| 196 | } | 193 | } |
| 197 | 194 | ||
| 198 | out: | 195 | out: |
| 199 | unlock_kernel(); | ||
| 200 | return result; | 196 | return result; |
| 201 | } | 197 | } |
| 202 | 198 | ||
diff --git a/fs/udf/inode.c b/fs/udf/inode.c index b2fe4d7f20eb..c6a2e782b97b 100644 --- a/fs/udf/inode.c +++ b/fs/udf/inode.c | |||
| @@ -31,7 +31,6 @@ | |||
| 31 | 31 | ||
| 32 | #include "udfdecl.h" | 32 | #include "udfdecl.h" |
| 33 | #include <linux/mm.h> | 33 | #include <linux/mm.h> |
| 34 | #include <linux/smp_lock.h> | ||
| 35 | #include <linux/module.h> | 34 | #include <linux/module.h> |
| 36 | #include <linux/pagemap.h> | 35 | #include <linux/pagemap.h> |
| 37 | #include <linux/buffer_head.h> | 36 | #include <linux/buffer_head.h> |
| @@ -96,9 +95,7 @@ void udf_evict_inode(struct inode *inode) | |||
| 96 | kfree(iinfo->i_ext.i_data); | 95 | kfree(iinfo->i_ext.i_data); |
| 97 | iinfo->i_ext.i_data = NULL; | 96 | iinfo->i_ext.i_data = NULL; |
| 98 | if (want_delete) { | 97 | if (want_delete) { |
| 99 | lock_kernel(); | ||
| 100 | udf_free_inode(inode); | 98 | udf_free_inode(inode); |
| 101 | unlock_kernel(); | ||
| 102 | } | 99 | } |
| 103 | } | 100 | } |
| 104 | 101 | ||
diff --git a/fs/udf/namei.c b/fs/udf/namei.c index d5eb000ddddd..26815a25379d 100644 --- a/fs/udf/namei.c +++ b/fs/udf/namei.c | |||
| @@ -27,7 +27,6 @@ | |||
| 27 | #include <linux/errno.h> | 27 | #include <linux/errno.h> |
| 28 | #include <linux/mm.h> | 28 | #include <linux/mm.h> |
| 29 | #include <linux/slab.h> | 29 | #include <linux/slab.h> |
| 30 | #include <linux/smp_lock.h> | ||
| 31 | #include <linux/buffer_head.h> | 30 | #include <linux/buffer_head.h> |
| 32 | #include <linux/sched.h> | 31 | #include <linux/sched.h> |
| 33 | #include <linux/crc-itu-t.h> | 32 | #include <linux/crc-itu-t.h> |
| @@ -263,7 +262,6 @@ static struct dentry *udf_lookup(struct inode *dir, struct dentry *dentry, | |||
| 263 | if (dentry->d_name.len > UDF_NAME_LEN - 2) | 262 | if (dentry->d_name.len > UDF_NAME_LEN - 2) |
| 264 | return ERR_PTR(-ENAMETOOLONG); | 263 | return ERR_PTR(-ENAMETOOLONG); |
| 265 | 264 | ||
| 266 | lock_kernel(); | ||
| 267 | #ifdef UDF_RECOVERY | 265 | #ifdef UDF_RECOVERY |
| 268 | /* temporary shorthand for specifying files by inode number */ | 266 | /* temporary shorthand for specifying files by inode number */ |
| 269 | if (!strncmp(dentry->d_name.name, ".B=", 3)) { | 267 | if (!strncmp(dentry->d_name.name, ".B=", 3)) { |
| @@ -275,7 +273,6 @@ static struct dentry *udf_lookup(struct inode *dir, struct dentry *dentry, | |||
| 275 | }; | 273 | }; |
| 276 | inode = udf_iget(dir->i_sb, lb); | 274 | inode = udf_iget(dir->i_sb, lb); |
| 277 | if (!inode) { | 275 | if (!inode) { |
| 278 | unlock_kernel(); | ||
| 279 | return ERR_PTR(-EACCES); | 276 | return ERR_PTR(-EACCES); |
| 280 | } | 277 | } |
| 281 | } else | 278 | } else |
| @@ -291,11 +288,9 @@ static struct dentry *udf_lookup(struct inode *dir, struct dentry *dentry, | |||
| 291 | loc = lelb_to_cpu(cfi.icb.extLocation); | 288 | loc = lelb_to_cpu(cfi.icb.extLocation); |
| 292 | inode = udf_iget(dir->i_sb, &loc); | 289 | inode = udf_iget(dir->i_sb, &loc); |
| 293 | if (!inode) { | 290 | if (!inode) { |
| 294 | unlock_kernel(); | ||
| 295 | return ERR_PTR(-EACCES); | 291 | return ERR_PTR(-EACCES); |
| 296 | } | 292 | } |
| 297 | } | 293 | } |
| 298 | unlock_kernel(); | ||
| 299 | 294 | ||
| 300 | return d_splice_alias(inode, dentry); | 295 | return d_splice_alias(inode, dentry); |
| 301 | } | 296 | } |
| @@ -562,10 +557,8 @@ static int udf_create(struct inode *dir, struct dentry *dentry, int mode, | |||
| 562 | int err; | 557 | int err; |
| 563 | struct udf_inode_info *iinfo; | 558 | struct udf_inode_info *iinfo; |
| 564 | 559 | ||
| 565 | lock_kernel(); | ||
| 566 | inode = udf_new_inode(dir, mode, &err); | 560 | inode = udf_new_inode(dir, mode, &err); |
| 567 | if (!inode) { | 561 | if (!inode) { |
| 568 | unlock_kernel(); | ||
| 569 | return err; | 562 | return err; |
| 570 | } | 563 | } |
| 571 | 564 | ||
| @@ -583,7 +576,6 @@ static int udf_create(struct inode *dir, struct dentry *dentry, int mode, | |||
| 583 | inode->i_nlink--; | 576 | inode->i_nlink--; |
| 584 | mark_inode_dirty(inode); | 577 | mark_inode_dirty(inode); |
| 585 | iput(inode); | 578 | iput(inode); |
| 586 | unlock_kernel(); | ||
| 587 | return err; | 579 | return err; |
| 588 | } | 580 | } |
| 589 | cfi.icb.extLength = cpu_to_le32(inode->i_sb->s_blocksize); | 581 | cfi.icb.extLength = cpu_to_le32(inode->i_sb->s_blocksize); |
| @@ -596,7 +588,6 @@ static int udf_create(struct inode *dir, struct dentry *dentry, int mode, | |||
| 596 | if (fibh.sbh != fibh.ebh) | 588 | if (fibh.sbh != fibh.ebh) |
| 597 | brelse(fibh.ebh); | 589 | brelse(fibh.ebh); |
| 598 | brelse(fibh.sbh); | 590 | brelse(fibh.sbh); |
| 599 | unlock_kernel(); | ||
| 600 | d_instantiate(dentry, inode); | 591 | d_instantiate(dentry, inode); |
| 601 | 592 | ||
| 602 | return 0; | 593 | return 0; |
| @@ -614,7 +605,6 @@ static int udf_mknod(struct inode *dir, struct dentry *dentry, int mode, | |||
| 614 | if (!old_valid_dev(rdev)) | 605 | if (!old_valid_dev(rdev)) |
| 615 | return -EINVAL; | 606 | return -EINVAL; |
| 616 | 607 | ||
| 617 | lock_kernel(); | ||
| 618 | err = -EIO; | 608 | err = -EIO; |
| 619 | inode = udf_new_inode(dir, mode, &err); | 609 | inode = udf_new_inode(dir, mode, &err); |
| 620 | if (!inode) | 610 | if (!inode) |
| @@ -627,7 +617,6 @@ static int udf_mknod(struct inode *dir, struct dentry *dentry, int mode, | |||
| 627 | inode->i_nlink--; | 617 | inode->i_nlink--; |
| 628 | mark_inode_dirty(inode); | 618 | mark_inode_dirty(inode); |
| 629 | iput(inode); | 619 | iput(inode); |
| 630 | unlock_kernel(); | ||
| 631 | return err; | 620 | return err; |
| 632 | } | 621 | } |
| 633 | cfi.icb.extLength = cpu_to_le32(inode->i_sb->s_blocksize); | 622 | cfi.icb.extLength = cpu_to_le32(inode->i_sb->s_blocksize); |
| @@ -646,7 +635,6 @@ static int udf_mknod(struct inode *dir, struct dentry *dentry, int mode, | |||
| 646 | err = 0; | 635 | err = 0; |
| 647 | 636 | ||
| 648 | out: | 637 | out: |
| 649 | unlock_kernel(); | ||
| 650 | return err; | 638 | return err; |
| 651 | } | 639 | } |
| 652 | 640 | ||
| @@ -659,7 +647,6 @@ static int udf_mkdir(struct inode *dir, struct dentry *dentry, int mode) | |||
| 659 | struct udf_inode_info *dinfo = UDF_I(dir); | 647 | struct udf_inode_info *dinfo = UDF_I(dir); |
| 660 | struct udf_inode_info *iinfo; | 648 | struct udf_inode_info *iinfo; |
| 661 | 649 | ||
| 662 | lock_kernel(); | ||
| 663 | err = -EMLINK; | 650 | err = -EMLINK; |
| 664 | if (dir->i_nlink >= (256 << sizeof(dir->i_nlink)) - 1) | 651 | if (dir->i_nlink >= (256 << sizeof(dir->i_nlink)) - 1) |
| 665 | goto out; | 652 | goto out; |
| @@ -712,7 +699,6 @@ static int udf_mkdir(struct inode *dir, struct dentry *dentry, int mode) | |||
| 712 | err = 0; | 699 | err = 0; |
| 713 | 700 | ||
| 714 | out: | 701 | out: |
| 715 | unlock_kernel(); | ||
| 716 | return err; | 702 | return err; |
| 717 | } | 703 | } |
| 718 | 704 | ||
| @@ -794,7 +780,6 @@ static int udf_rmdir(struct inode *dir, struct dentry *dentry) | |||
| 794 | struct kernel_lb_addr tloc; | 780 | struct kernel_lb_addr tloc; |
| 795 | 781 | ||
| 796 | retval = -ENOENT; | 782 | retval = -ENOENT; |
| 797 | lock_kernel(); | ||
| 798 | fi = udf_find_entry(dir, &dentry->d_name, &fibh, &cfi); | 783 | fi = udf_find_entry(dir, &dentry->d_name, &fibh, &cfi); |
| 799 | if (!fi) | 784 | if (!fi) |
| 800 | goto out; | 785 | goto out; |
| @@ -826,7 +811,6 @@ end_rmdir: | |||
| 826 | brelse(fibh.sbh); | 811 | brelse(fibh.sbh); |
| 827 | 812 | ||
| 828 | out: | 813 | out: |
| 829 | unlock_kernel(); | ||
| 830 | return retval; | 814 | return retval; |
| 831 | } | 815 | } |
| 832 | 816 | ||
| @@ -840,7 +824,6 @@ static int udf_unlink(struct inode *dir, struct dentry *dentry) | |||
| 840 | struct kernel_lb_addr tloc; | 824 | struct kernel_lb_addr tloc; |
| 841 | 825 | ||
| 842 | retval = -ENOENT; | 826 | retval = -ENOENT; |
| 843 | lock_kernel(); | ||
| 844 | fi = udf_find_entry(dir, &dentry->d_name, &fibh, &cfi); | 827 | fi = udf_find_entry(dir, &dentry->d_name, &fibh, &cfi); |
| 845 | if (!fi) | 828 | if (!fi) |
| 846 | goto out; | 829 | goto out; |
| @@ -870,7 +853,6 @@ end_unlink: | |||
| 870 | brelse(fibh.sbh); | 853 | brelse(fibh.sbh); |
| 871 | 854 | ||
| 872 | out: | 855 | out: |
| 873 | unlock_kernel(); | ||
| 874 | return retval; | 856 | return retval; |
| 875 | } | 857 | } |
| 876 | 858 | ||
| @@ -1050,15 +1032,12 @@ static int udf_link(struct dentry *old_dentry, struct inode *dir, | |||
| 1050 | struct fileIdentDesc cfi, *fi; | 1032 | struct fileIdentDesc cfi, *fi; |
| 1051 | int err; | 1033 | int err; |
| 1052 | 1034 | ||
| 1053 | lock_kernel(); | ||
| 1054 | if (inode->i_nlink >= (256 << sizeof(inode->i_nlink)) - 1) { | 1035 | if (inode->i_nlink >= (256 << sizeof(inode->i_nlink)) - 1) { |
| 1055 | unlock_kernel(); | ||
| 1056 | return -EMLINK; | 1036 | return -EMLINK; |
| 1057 | } | 1037 | } |
| 1058 | 1038 | ||
| 1059 | fi = udf_add_entry(dir, dentry, &fibh, &cfi, &err); | 1039 | fi = udf_add_entry(dir, dentry, &fibh, &cfi, &err); |
| 1060 | if (!fi) { | 1040 | if (!fi) { |
| 1061 | unlock_kernel(); | ||
| 1062 | return err; | 1041 | return err; |
| 1063 | } | 1042 | } |
| 1064 | cfi.icb.extLength = cpu_to_le32(inode->i_sb->s_blocksize); | 1043 | cfi.icb.extLength = cpu_to_le32(inode->i_sb->s_blocksize); |
| @@ -1079,7 +1058,6 @@ static int udf_link(struct dentry *old_dentry, struct inode *dir, | |||
| 1079 | mark_inode_dirty(inode); | 1058 | mark_inode_dirty(inode); |
| 1080 | ihold(inode); | 1059 | ihold(inode); |
| 1081 | d_instantiate(dentry, inode); | 1060 | d_instantiate(dentry, inode); |
| 1082 | unlock_kernel(); | ||
| 1083 | 1061 | ||
| 1084 | return 0; | 1062 | return 0; |
| 1085 | } | 1063 | } |
| @@ -1100,7 +1078,6 @@ static int udf_rename(struct inode *old_dir, struct dentry *old_dentry, | |||
| 1100 | struct kernel_lb_addr tloc; | 1078 | struct kernel_lb_addr tloc; |
| 1101 | struct udf_inode_info *old_iinfo = UDF_I(old_inode); | 1079 | struct udf_inode_info *old_iinfo = UDF_I(old_inode); |
| 1102 | 1080 | ||
| 1103 | lock_kernel(); | ||
| 1104 | ofi = udf_find_entry(old_dir, &old_dentry->d_name, &ofibh, &ocfi); | 1081 | ofi = udf_find_entry(old_dir, &old_dentry->d_name, &ofibh, &ocfi); |
| 1105 | if (ofi) { | 1082 | if (ofi) { |
| 1106 | if (ofibh.sbh != ofibh.ebh) | 1083 | if (ofibh.sbh != ofibh.ebh) |
| @@ -1224,7 +1201,6 @@ end_rename: | |||
| 1224 | brelse(nfibh.ebh); | 1201 | brelse(nfibh.ebh); |
| 1225 | brelse(nfibh.sbh); | 1202 | brelse(nfibh.sbh); |
| 1226 | } | 1203 | } |
| 1227 | unlock_kernel(); | ||
| 1228 | 1204 | ||
| 1229 | return retval; | 1205 | return retval; |
| 1230 | } | 1206 | } |
| @@ -1237,7 +1213,6 @@ static struct dentry *udf_get_parent(struct dentry *child) | |||
| 1237 | struct fileIdentDesc cfi; | 1213 | struct fileIdentDesc cfi; |
| 1238 | struct udf_fileident_bh fibh; | 1214 | struct udf_fileident_bh fibh; |
| 1239 | 1215 | ||
| 1240 | lock_kernel(); | ||
| 1241 | if (!udf_find_entry(child->d_inode, &dotdot, &fibh, &cfi)) | 1216 | if (!udf_find_entry(child->d_inode, &dotdot, &fibh, &cfi)) |
| 1242 | goto out_unlock; | 1217 | goto out_unlock; |
| 1243 | 1218 | ||
| @@ -1249,11 +1224,9 @@ static struct dentry *udf_get_parent(struct dentry *child) | |||
| 1249 | inode = udf_iget(child->d_inode->i_sb, &tloc); | 1224 | inode = udf_iget(child->d_inode->i_sb, &tloc); |
| 1250 | if (!inode) | 1225 | if (!inode) |
| 1251 | goto out_unlock; | 1226 | goto out_unlock; |
| 1252 | unlock_kernel(); | ||
| 1253 | 1227 | ||
| 1254 | return d_obtain_alias(inode); | 1228 | return d_obtain_alias(inode); |
| 1255 | out_unlock: | 1229 | out_unlock: |
| 1256 | unlock_kernel(); | ||
| 1257 | return ERR_PTR(-EACCES); | 1230 | return ERR_PTR(-EACCES); |
| 1258 | } | 1231 | } |
| 1259 | 1232 | ||
diff --git a/fs/udf/super.c b/fs/udf/super.c index 441b892cf85e..536f89da4af2 100644 --- a/fs/udf/super.c +++ b/fs/udf/super.c | |||
| @@ -48,7 +48,6 @@ | |||
| 48 | #include <linux/stat.h> | 48 | #include <linux/stat.h> |
| 49 | #include <linux/cdrom.h> | 49 | #include <linux/cdrom.h> |
| 50 | #include <linux/nls.h> | 50 | #include <linux/nls.h> |
| 51 | #include <linux/smp_lock.h> | ||
| 52 | #include <linux/buffer_head.h> | 51 | #include <linux/buffer_head.h> |
| 53 | #include <linux/vfs.h> | 52 | #include <linux/vfs.h> |
| 54 | #include <linux/vmalloc.h> | 53 | #include <linux/vmalloc.h> |
| @@ -1911,8 +1910,6 @@ static int udf_fill_super(struct super_block *sb, void *options, int silent) | |||
| 1911 | struct kernel_lb_addr rootdir, fileset; | 1910 | struct kernel_lb_addr rootdir, fileset; |
| 1912 | struct udf_sb_info *sbi; | 1911 | struct udf_sb_info *sbi; |
| 1913 | 1912 | ||
| 1914 | lock_kernel(); | ||
| 1915 | |||
| 1916 | uopt.flags = (1 << UDF_FLAG_USE_AD_IN_ICB) | (1 << UDF_FLAG_STRICT); | 1913 | uopt.flags = (1 << UDF_FLAG_USE_AD_IN_ICB) | (1 << UDF_FLAG_STRICT); |
| 1917 | uopt.uid = -1; | 1914 | uopt.uid = -1; |
| 1918 | uopt.gid = -1; | 1915 | uopt.gid = -1; |
| @@ -1921,10 +1918,8 @@ static int udf_fill_super(struct super_block *sb, void *options, int silent) | |||
| 1921 | uopt.dmode = UDF_INVALID_MODE; | 1918 | uopt.dmode = UDF_INVALID_MODE; |
| 1922 | 1919 | ||
| 1923 | sbi = kzalloc(sizeof(struct udf_sb_info), GFP_KERNEL); | 1920 | sbi = kzalloc(sizeof(struct udf_sb_info), GFP_KERNEL); |
| 1924 | if (!sbi) { | 1921 | if (!sbi) |
| 1925 | unlock_kernel(); | ||
| 1926 | return -ENOMEM; | 1922 | return -ENOMEM; |
| 1927 | } | ||
| 1928 | 1923 | ||
| 1929 | sb->s_fs_info = sbi; | 1924 | sb->s_fs_info = sbi; |
| 1930 | 1925 | ||
| @@ -2071,7 +2066,6 @@ static int udf_fill_super(struct super_block *sb, void *options, int silent) | |||
| 2071 | goto error_out; | 2066 | goto error_out; |
| 2072 | } | 2067 | } |
| 2073 | sb->s_maxbytes = MAX_LFS_FILESIZE; | 2068 | sb->s_maxbytes = MAX_LFS_FILESIZE; |
| 2074 | unlock_kernel(); | ||
| 2075 | return 0; | 2069 | return 0; |
| 2076 | 2070 | ||
| 2077 | error_out: | 2071 | error_out: |
| @@ -2092,7 +2086,6 @@ error_out: | |||
| 2092 | kfree(sbi); | 2086 | kfree(sbi); |
| 2093 | sb->s_fs_info = NULL; | 2087 | sb->s_fs_info = NULL; |
| 2094 | 2088 | ||
| 2095 | unlock_kernel(); | ||
| 2096 | return -EINVAL; | 2089 | return -EINVAL; |
| 2097 | } | 2090 | } |
| 2098 | 2091 | ||
