diff options
Diffstat (limited to 'fs')
-rw-r--r-- | fs/btrfs/extent-tree.c | 5 | ||||
-rw-r--r-- | fs/btrfs/file.c | 1 | ||||
-rw-r--r-- | fs/btrfs/inode.c | 3 | ||||
-rw-r--r-- | fs/btrfs/locking.h | 1 | ||||
-rw-r--r-- | fs/btrfs/qgroup.c | 10 | ||||
-rw-r--r-- | fs/btrfs/transaction.c | 11 | ||||
-rw-r--r-- | fs/btrfs/volumes.c | 6 | ||||
-rw-r--r-- | fs/cifs/cifsfs.c | 1 | ||||
-rw-r--r-- | fs/compat.c | 15 | ||||
-rw-r--r-- | fs/ext2/ialloc.c | 1 | ||||
-rw-r--r-- | fs/ext2/inode.c | 2 | ||||
-rw-r--r-- | fs/ext3/super.c | 4 | ||||
-rw-r--r-- | fs/ext4/super.c | 2 | ||||
-rw-r--r-- | fs/freevxfs/vxfs_super.c | 1 | ||||
-rw-r--r-- | fs/hostfs/hostfs_kern.c | 10 | ||||
-rw-r--r-- | fs/hpfs/super.c | 1 | ||||
-rw-r--r-- | fs/isofs/inode.c | 1 | ||||
-rw-r--r-- | fs/nfs/super.c | 1 | ||||
-rw-r--r-- | fs/nfsd/nfs4state.c | 36 | ||||
-rw-r--r-- | fs/pipe.c | 3 | ||||
-rw-r--r-- | fs/quota/dquot.c | 5 | ||||
-rw-r--r-- | fs/reiserfs/super.c | 4 | ||||
-rw-r--r-- | fs/squashfs/super.c | 1 | ||||
-rw-r--r-- | fs/sysv/super.c | 1 | ||||
-rw-r--r-- | fs/udf/super.c | 1 |
25 files changed, 58 insertions, 69 deletions
diff --git a/fs/btrfs/extent-tree.c b/fs/btrfs/extent-tree.c index 3e074dab2d57..9ac2eca681eb 100644 --- a/fs/btrfs/extent-tree.c +++ b/fs/btrfs/extent-tree.c | |||
@@ -1467,8 +1467,11 @@ int lookup_inline_extent_backref(struct btrfs_trans_handle *trans, | |||
1467 | if (ret && !insert) { | 1467 | if (ret && !insert) { |
1468 | err = -ENOENT; | 1468 | err = -ENOENT; |
1469 | goto out; | 1469 | goto out; |
1470 | } else if (ret) { | ||
1471 | err = -EIO; | ||
1472 | WARN_ON(1); | ||
1473 | goto out; | ||
1470 | } | 1474 | } |
1471 | BUG_ON(ret); /* Corruption */ | ||
1472 | 1475 | ||
1473 | leaf = path->nodes[0]; | 1476 | leaf = path->nodes[0]; |
1474 | item_size = btrfs_item_size_nr(leaf, path->slots[0]); | 1477 | item_size = btrfs_item_size_nr(leaf, path->slots[0]); |
diff --git a/fs/btrfs/file.c b/fs/btrfs/file.c index af1d0605a5c1..5b4ea5f55b8f 100644 --- a/fs/btrfs/file.c +++ b/fs/btrfs/file.c | |||
@@ -591,6 +591,7 @@ void btrfs_drop_extent_cache(struct inode *inode, u64 start, u64 end, | |||
591 | } | 591 | } |
592 | compressed = test_bit(EXTENT_FLAG_COMPRESSED, &em->flags); | 592 | compressed = test_bit(EXTENT_FLAG_COMPRESSED, &em->flags); |
593 | clear_bit(EXTENT_FLAG_PINNED, &em->flags); | 593 | clear_bit(EXTENT_FLAG_PINNED, &em->flags); |
594 | clear_bit(EXTENT_FLAG_LOGGING, &flags); | ||
594 | remove_extent_mapping(em_tree, em); | 595 | remove_extent_mapping(em_tree, em); |
595 | if (no_splits) | 596 | if (no_splits) |
596 | goto next; | 597 | goto next; |
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c index d1470adca8f8..ca1b767d51f7 100644 --- a/fs/btrfs/inode.c +++ b/fs/btrfs/inode.c | |||
@@ -2312,6 +2312,7 @@ again: | |||
2312 | key.type = BTRFS_EXTENT_DATA_KEY; | 2312 | key.type = BTRFS_EXTENT_DATA_KEY; |
2313 | key.offset = start; | 2313 | key.offset = start; |
2314 | 2314 | ||
2315 | path->leave_spinning = 1; | ||
2315 | if (merge) { | 2316 | if (merge) { |
2316 | struct btrfs_file_extent_item *fi; | 2317 | struct btrfs_file_extent_item *fi; |
2317 | u64 extent_len; | 2318 | u64 extent_len; |
@@ -2368,6 +2369,7 @@ again: | |||
2368 | 2369 | ||
2369 | btrfs_mark_buffer_dirty(leaf); | 2370 | btrfs_mark_buffer_dirty(leaf); |
2370 | inode_add_bytes(inode, len); | 2371 | inode_add_bytes(inode, len); |
2372 | btrfs_release_path(path); | ||
2371 | 2373 | ||
2372 | ret = btrfs_inc_extent_ref(trans, root, new->bytenr, | 2374 | ret = btrfs_inc_extent_ref(trans, root, new->bytenr, |
2373 | new->disk_len, 0, | 2375 | new->disk_len, 0, |
@@ -2381,6 +2383,7 @@ again: | |||
2381 | ret = 1; | 2383 | ret = 1; |
2382 | out_free_path: | 2384 | out_free_path: |
2383 | btrfs_release_path(path); | 2385 | btrfs_release_path(path); |
2386 | path->leave_spinning = 0; | ||
2384 | btrfs_end_transaction(trans, root); | 2387 | btrfs_end_transaction(trans, root); |
2385 | out_unlock: | 2388 | out_unlock: |
2386 | unlock_extent_cached(&BTRFS_I(inode)->io_tree, lock_start, lock_end, | 2389 | unlock_extent_cached(&BTRFS_I(inode)->io_tree, lock_start, lock_end, |
diff --git a/fs/btrfs/locking.h b/fs/btrfs/locking.h index ca52681e5f40..b81e0e9a4894 100644 --- a/fs/btrfs/locking.h +++ b/fs/btrfs/locking.h | |||
@@ -26,7 +26,6 @@ | |||
26 | 26 | ||
27 | void btrfs_tree_lock(struct extent_buffer *eb); | 27 | void btrfs_tree_lock(struct extent_buffer *eb); |
28 | void btrfs_tree_unlock(struct extent_buffer *eb); | 28 | void btrfs_tree_unlock(struct extent_buffer *eb); |
29 | int btrfs_try_spin_lock(struct extent_buffer *eb); | ||
30 | 29 | ||
31 | void btrfs_tree_read_lock(struct extent_buffer *eb); | 30 | void btrfs_tree_read_lock(struct extent_buffer *eb); |
32 | void btrfs_tree_read_unlock(struct extent_buffer *eb); | 31 | void btrfs_tree_read_unlock(struct extent_buffer *eb); |
diff --git a/fs/btrfs/qgroup.c b/fs/btrfs/qgroup.c index aee4b1cc3d98..5471e47d6559 100644 --- a/fs/btrfs/qgroup.c +++ b/fs/btrfs/qgroup.c | |||
@@ -1525,21 +1525,23 @@ int btrfs_qgroup_reserve(struct btrfs_root *root, u64 num_bytes) | |||
1525 | 1525 | ||
1526 | if ((qg->lim_flags & BTRFS_QGROUP_LIMIT_MAX_RFER) && | 1526 | if ((qg->lim_flags & BTRFS_QGROUP_LIMIT_MAX_RFER) && |
1527 | qg->reserved + qg->rfer + num_bytes > | 1527 | qg->reserved + qg->rfer + num_bytes > |
1528 | qg->max_rfer) | 1528 | qg->max_rfer) { |
1529 | ret = -EDQUOT; | 1529 | ret = -EDQUOT; |
1530 | goto out; | ||
1531 | } | ||
1530 | 1532 | ||
1531 | if ((qg->lim_flags & BTRFS_QGROUP_LIMIT_MAX_EXCL) && | 1533 | if ((qg->lim_flags & BTRFS_QGROUP_LIMIT_MAX_EXCL) && |
1532 | qg->reserved + qg->excl + num_bytes > | 1534 | qg->reserved + qg->excl + num_bytes > |
1533 | qg->max_excl) | 1535 | qg->max_excl) { |
1534 | ret = -EDQUOT; | 1536 | ret = -EDQUOT; |
1537 | goto out; | ||
1538 | } | ||
1535 | 1539 | ||
1536 | list_for_each_entry(glist, &qg->groups, next_group) { | 1540 | list_for_each_entry(glist, &qg->groups, next_group) { |
1537 | ulist_add(ulist, glist->group->qgroupid, | 1541 | ulist_add(ulist, glist->group->qgroupid, |
1538 | (uintptr_t)glist->group, GFP_ATOMIC); | 1542 | (uintptr_t)glist->group, GFP_ATOMIC); |
1539 | } | 1543 | } |
1540 | } | 1544 | } |
1541 | if (ret) | ||
1542 | goto out; | ||
1543 | 1545 | ||
1544 | /* | 1546 | /* |
1545 | * no limits exceeded, now record the reservation into all qgroups | 1547 | * no limits exceeded, now record the reservation into all qgroups |
diff --git a/fs/btrfs/transaction.c b/fs/btrfs/transaction.c index 9250b9c4f01e..50767bbaad6c 100644 --- a/fs/btrfs/transaction.c +++ b/fs/btrfs/transaction.c | |||
@@ -625,14 +625,13 @@ static int __btrfs_end_transaction(struct btrfs_trans_handle *trans, | |||
625 | 625 | ||
626 | btrfs_trans_release_metadata(trans, root); | 626 | btrfs_trans_release_metadata(trans, root); |
627 | trans->block_rsv = NULL; | 627 | trans->block_rsv = NULL; |
628 | /* | ||
629 | * the same root has to be passed to start_transaction and | ||
630 | * end_transaction. Subvolume quota depends on this. | ||
631 | */ | ||
632 | WARN_ON(trans->root != root); | ||
633 | 628 | ||
634 | if (trans->qgroup_reserved) { | 629 | if (trans->qgroup_reserved) { |
635 | btrfs_qgroup_free(root, trans->qgroup_reserved); | 630 | /* |
631 | * the same root has to be passed here between start_transaction | ||
632 | * and end_transaction. Subvolume quota depends on this. | ||
633 | */ | ||
634 | btrfs_qgroup_free(trans->root, trans->qgroup_reserved); | ||
636 | trans->qgroup_reserved = 0; | 635 | trans->qgroup_reserved = 0; |
637 | } | 636 | } |
638 | 637 | ||
diff --git a/fs/btrfs/volumes.c b/fs/btrfs/volumes.c index 6b9cff42265d..5989a92236f7 100644 --- a/fs/btrfs/volumes.c +++ b/fs/btrfs/volumes.c | |||
@@ -684,6 +684,12 @@ int btrfs_close_devices(struct btrfs_fs_devices *fs_devices) | |||
684 | __btrfs_close_devices(fs_devices); | 684 | __btrfs_close_devices(fs_devices); |
685 | free_fs_devices(fs_devices); | 685 | free_fs_devices(fs_devices); |
686 | } | 686 | } |
687 | /* | ||
688 | * Wait for rcu kworkers under __btrfs_close_devices | ||
689 | * to finish all blkdev_puts so device is really | ||
690 | * free when umount is done. | ||
691 | */ | ||
692 | rcu_barrier(); | ||
687 | return ret; | 693 | return ret; |
688 | } | 694 | } |
689 | 695 | ||
diff --git a/fs/cifs/cifsfs.c b/fs/cifs/cifsfs.c index 1a052c0eee8e..3cf8a15af916 100644 --- a/fs/cifs/cifsfs.c +++ b/fs/cifs/cifsfs.c | |||
@@ -777,6 +777,7 @@ struct file_system_type cifs_fs_type = { | |||
777 | .kill_sb = cifs_kill_sb, | 777 | .kill_sb = cifs_kill_sb, |
778 | /* .fs_flags */ | 778 | /* .fs_flags */ |
779 | }; | 779 | }; |
780 | MODULE_ALIAS_FS("cifs"); | ||
780 | const struct inode_operations cifs_dir_inode_ops = { | 781 | const struct inode_operations cifs_dir_inode_ops = { |
781 | .create = cifs_create, | 782 | .create = cifs_create, |
782 | .atomic_open = cifs_atomic_open, | 783 | .atomic_open = cifs_atomic_open, |
diff --git a/fs/compat.c b/fs/compat.c index fe40fde29111..d487985dd0ea 100644 --- a/fs/compat.c +++ b/fs/compat.c | |||
@@ -558,6 +558,10 @@ ssize_t compat_rw_copy_check_uvector(int type, | |||
558 | } | 558 | } |
559 | *ret_pointer = iov; | 559 | *ret_pointer = iov; |
560 | 560 | ||
561 | ret = -EFAULT; | ||
562 | if (!access_ok(VERIFY_READ, uvector, nr_segs*sizeof(*uvector))) | ||
563 | goto out; | ||
564 | |||
561 | /* | 565 | /* |
562 | * Single unix specification: | 566 | * Single unix specification: |
563 | * We should -EINVAL if an element length is not >= 0 and fitting an | 567 | * We should -EINVAL if an element length is not >= 0 and fitting an |
@@ -1080,17 +1084,12 @@ static ssize_t compat_do_readv_writev(int type, struct file *file, | |||
1080 | if (!file->f_op) | 1084 | if (!file->f_op) |
1081 | goto out; | 1085 | goto out; |
1082 | 1086 | ||
1083 | ret = -EFAULT; | 1087 | ret = compat_rw_copy_check_uvector(type, uvector, nr_segs, |
1084 | if (!access_ok(VERIFY_READ, uvector, nr_segs*sizeof(*uvector))) | ||
1085 | goto out; | ||
1086 | |||
1087 | tot_len = compat_rw_copy_check_uvector(type, uvector, nr_segs, | ||
1088 | UIO_FASTIOV, iovstack, &iov); | 1088 | UIO_FASTIOV, iovstack, &iov); |
1089 | if (tot_len == 0) { | 1089 | if (ret <= 0) |
1090 | ret = 0; | ||
1091 | goto out; | 1090 | goto out; |
1092 | } | ||
1093 | 1091 | ||
1092 | tot_len = ret; | ||
1094 | ret = rw_verify_area(type, file, pos, tot_len); | 1093 | ret = rw_verify_area(type, file, pos, tot_len); |
1095 | if (ret < 0) | 1094 | if (ret < 0) |
1096 | goto out; | 1095 | goto out; |
diff --git a/fs/ext2/ialloc.c b/fs/ext2/ialloc.c index 8f370e012e61..7cadd823bb31 100644 --- a/fs/ext2/ialloc.c +++ b/fs/ext2/ialloc.c | |||
@@ -118,7 +118,6 @@ void ext2_free_inode (struct inode * inode) | |||
118 | * as writing the quota to disk may need the lock as well. | 118 | * as writing the quota to disk may need the lock as well. |
119 | */ | 119 | */ |
120 | /* Quota is already initialized in iput() */ | 120 | /* Quota is already initialized in iput() */ |
121 | ext2_xattr_delete_inode(inode); | ||
122 | dquot_free_inode(inode); | 121 | dquot_free_inode(inode); |
123 | dquot_drop(inode); | 122 | dquot_drop(inode); |
124 | 123 | ||
diff --git a/fs/ext2/inode.c b/fs/ext2/inode.c index c3881e56662e..fe60cc1117d8 100644 --- a/fs/ext2/inode.c +++ b/fs/ext2/inode.c | |||
@@ -34,6 +34,7 @@ | |||
34 | #include "ext2.h" | 34 | #include "ext2.h" |
35 | #include "acl.h" | 35 | #include "acl.h" |
36 | #include "xip.h" | 36 | #include "xip.h" |
37 | #include "xattr.h" | ||
37 | 38 | ||
38 | static int __ext2_write_inode(struct inode *inode, int do_sync); | 39 | static int __ext2_write_inode(struct inode *inode, int do_sync); |
39 | 40 | ||
@@ -88,6 +89,7 @@ void ext2_evict_inode(struct inode * inode) | |||
88 | inode->i_size = 0; | 89 | inode->i_size = 0; |
89 | if (inode->i_blocks) | 90 | if (inode->i_blocks) |
90 | ext2_truncate_blocks(inode, 0); | 91 | ext2_truncate_blocks(inode, 0); |
92 | ext2_xattr_delete_inode(inode); | ||
91 | } | 93 | } |
92 | 94 | ||
93 | invalidate_inode_buffers(inode); | 95 | invalidate_inode_buffers(inode); |
diff --git a/fs/ext3/super.c b/fs/ext3/super.c index 1d6e2ed85322..fb5120a5505c 100644 --- a/fs/ext3/super.c +++ b/fs/ext3/super.c | |||
@@ -353,7 +353,7 @@ static struct block_device *ext3_blkdev_get(dev_t dev, struct super_block *sb) | |||
353 | return bdev; | 353 | return bdev; |
354 | 354 | ||
355 | fail: | 355 | fail: |
356 | ext3_msg(sb, "error: failed to open journal device %s: %ld", | 356 | ext3_msg(sb, KERN_ERR, "error: failed to open journal device %s: %ld", |
357 | __bdevname(dev, b), PTR_ERR(bdev)); | 357 | __bdevname(dev, b), PTR_ERR(bdev)); |
358 | 358 | ||
359 | return NULL; | 359 | return NULL; |
@@ -887,7 +887,7 @@ static ext3_fsblk_t get_sb_block(void **data, struct super_block *sb) | |||
887 | /*todo: use simple_strtoll with >32bit ext3 */ | 887 | /*todo: use simple_strtoll with >32bit ext3 */ |
888 | sb_block = simple_strtoul(options, &options, 0); | 888 | sb_block = simple_strtoul(options, &options, 0); |
889 | if (*options && *options != ',') { | 889 | if (*options && *options != ',') { |
890 | ext3_msg(sb, "error: invalid sb specification: %s", | 890 | ext3_msg(sb, KERN_ERR, "error: invalid sb specification: %s", |
891 | (char *) *data); | 891 | (char *) *data); |
892 | return 1; | 892 | return 1; |
893 | } | 893 | } |
diff --git a/fs/ext4/super.c b/fs/ext4/super.c index 34e855219231..b3818b48f418 100644 --- a/fs/ext4/super.c +++ b/fs/ext4/super.c | |||
@@ -91,6 +91,7 @@ static struct file_system_type ext2_fs_type = { | |||
91 | .fs_flags = FS_REQUIRES_DEV, | 91 | .fs_flags = FS_REQUIRES_DEV, |
92 | }; | 92 | }; |
93 | MODULE_ALIAS_FS("ext2"); | 93 | MODULE_ALIAS_FS("ext2"); |
94 | MODULE_ALIAS("ext2"); | ||
94 | #define IS_EXT2_SB(sb) ((sb)->s_bdev->bd_holder == &ext2_fs_type) | 95 | #define IS_EXT2_SB(sb) ((sb)->s_bdev->bd_holder == &ext2_fs_type) |
95 | #else | 96 | #else |
96 | #define IS_EXT2_SB(sb) (0) | 97 | #define IS_EXT2_SB(sb) (0) |
@@ -106,6 +107,7 @@ static struct file_system_type ext3_fs_type = { | |||
106 | .fs_flags = FS_REQUIRES_DEV, | 107 | .fs_flags = FS_REQUIRES_DEV, |
107 | }; | 108 | }; |
108 | MODULE_ALIAS_FS("ext3"); | 109 | MODULE_ALIAS_FS("ext3"); |
110 | MODULE_ALIAS("ext3"); | ||
109 | #define IS_EXT3_SB(sb) ((sb)->s_bdev->bd_holder == &ext3_fs_type) | 111 | #define IS_EXT3_SB(sb) ((sb)->s_bdev->bd_holder == &ext3_fs_type) |
110 | #else | 112 | #else |
111 | #define IS_EXT3_SB(sb) (0) | 113 | #define IS_EXT3_SB(sb) (0) |
diff --git a/fs/freevxfs/vxfs_super.c b/fs/freevxfs/vxfs_super.c index 455074308069..e37eb274e492 100644 --- a/fs/freevxfs/vxfs_super.c +++ b/fs/freevxfs/vxfs_super.c | |||
@@ -258,6 +258,7 @@ static struct file_system_type vxfs_fs_type = { | |||
258 | .fs_flags = FS_REQUIRES_DEV, | 258 | .fs_flags = FS_REQUIRES_DEV, |
259 | }; | 259 | }; |
260 | MODULE_ALIAS_FS("vxfs"); /* makes mount -t vxfs autoload the module */ | 260 | MODULE_ALIAS_FS("vxfs"); /* makes mount -t vxfs autoload the module */ |
261 | MODULE_ALIAS("vxfs"); | ||
261 | 262 | ||
262 | static int __init | 263 | static int __init |
263 | vxfs_init(void) | 264 | vxfs_init(void) |
diff --git a/fs/hostfs/hostfs_kern.c b/fs/hostfs/hostfs_kern.c index fbabb906066f..0f6e52d22b84 100644 --- a/fs/hostfs/hostfs_kern.c +++ b/fs/hostfs/hostfs_kern.c | |||
@@ -845,15 +845,8 @@ int hostfs_setattr(struct dentry *dentry, struct iattr *attr) | |||
845 | return err; | 845 | return err; |
846 | 846 | ||
847 | if ((attr->ia_valid & ATTR_SIZE) && | 847 | if ((attr->ia_valid & ATTR_SIZE) && |
848 | attr->ia_size != i_size_read(inode)) { | 848 | attr->ia_size != i_size_read(inode)) |
849 | int error; | ||
850 | |||
851 | error = inode_newsize_ok(inode, attr->ia_size); | ||
852 | if (error) | ||
853 | return error; | ||
854 | |||
855 | truncate_setsize(inode, attr->ia_size); | 849 | truncate_setsize(inode, attr->ia_size); |
856 | } | ||
857 | 850 | ||
858 | setattr_copy(inode, attr); | 851 | setattr_copy(inode, attr); |
859 | mark_inode_dirty(inode); | 852 | mark_inode_dirty(inode); |
@@ -993,6 +986,7 @@ static struct file_system_type hostfs_type = { | |||
993 | .kill_sb = hostfs_kill_sb, | 986 | .kill_sb = hostfs_kill_sb, |
994 | .fs_flags = 0, | 987 | .fs_flags = 0, |
995 | }; | 988 | }; |
989 | MODULE_ALIAS_FS("hostfs"); | ||
996 | 990 | ||
997 | static int __init init_hostfs(void) | 991 | static int __init init_hostfs(void) |
998 | { | 992 | { |
diff --git a/fs/hpfs/super.c b/fs/hpfs/super.c index a3076228523d..a0617e706957 100644 --- a/fs/hpfs/super.c +++ b/fs/hpfs/super.c | |||
@@ -688,6 +688,7 @@ static struct file_system_type hpfs_fs_type = { | |||
688 | .kill_sb = kill_block_super, | 688 | .kill_sb = kill_block_super, |
689 | .fs_flags = FS_REQUIRES_DEV, | 689 | .fs_flags = FS_REQUIRES_DEV, |
690 | }; | 690 | }; |
691 | MODULE_ALIAS_FS("hpfs"); | ||
691 | 692 | ||
692 | static int __init init_hpfs_fs(void) | 693 | static int __init init_hpfs_fs(void) |
693 | { | 694 | { |
diff --git a/fs/isofs/inode.c b/fs/isofs/inode.c index a67f16e846a2..d9b8aebdeb22 100644 --- a/fs/isofs/inode.c +++ b/fs/isofs/inode.c | |||
@@ -1557,6 +1557,7 @@ static struct file_system_type iso9660_fs_type = { | |||
1557 | .fs_flags = FS_REQUIRES_DEV, | 1557 | .fs_flags = FS_REQUIRES_DEV, |
1558 | }; | 1558 | }; |
1559 | MODULE_ALIAS_FS("iso9660"); | 1559 | MODULE_ALIAS_FS("iso9660"); |
1560 | MODULE_ALIAS("iso9660"); | ||
1560 | 1561 | ||
1561 | static int __init init_iso9660_fs(void) | 1562 | static int __init init_iso9660_fs(void) |
1562 | { | 1563 | { |
diff --git a/fs/nfs/super.c b/fs/nfs/super.c index 95cdcb208dfb..2f8a29db0f1b 100644 --- a/fs/nfs/super.c +++ b/fs/nfs/super.c | |||
@@ -335,6 +335,7 @@ struct file_system_type nfs4_fs_type = { | |||
335 | .fs_flags = FS_RENAME_DOES_D_MOVE|FS_BINARY_MOUNTDATA, | 335 | .fs_flags = FS_RENAME_DOES_D_MOVE|FS_BINARY_MOUNTDATA, |
336 | }; | 336 | }; |
337 | MODULE_ALIAS_FS("nfs4"); | 337 | MODULE_ALIAS_FS("nfs4"); |
338 | MODULE_ALIAS("nfs4"); | ||
338 | EXPORT_SYMBOL_GPL(nfs4_fs_type); | 339 | EXPORT_SYMBOL_GPL(nfs4_fs_type); |
339 | 340 | ||
340 | static int __init register_nfs4_fs(void) | 341 | static int __init register_nfs4_fs(void) |
diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c index 16d39c6c4fbb..2e27430b9070 100644 --- a/fs/nfsd/nfs4state.c +++ b/fs/nfsd/nfs4state.c | |||
@@ -230,37 +230,6 @@ static void nfs4_file_put_access(struct nfs4_file *fp, int oflag) | |||
230 | __nfs4_file_put_access(fp, oflag); | 230 | __nfs4_file_put_access(fp, oflag); |
231 | } | 231 | } |
232 | 232 | ||
233 | static inline int get_new_stid(struct nfs4_stid *stid) | ||
234 | { | ||
235 | static int min_stateid = 0; | ||
236 | struct idr *stateids = &stid->sc_client->cl_stateids; | ||
237 | int new_stid; | ||
238 | int error; | ||
239 | |||
240 | error = idr_get_new_above(stateids, stid, min_stateid, &new_stid); | ||
241 | /* | ||
242 | * Note: the necessary preallocation was done in | ||
243 | * nfs4_alloc_stateid(). The idr code caps the number of | ||
244 | * preallocations that can exist at a time, but the state lock | ||
245 | * prevents anyone from using ours before we get here: | ||
246 | */ | ||
247 | WARN_ON_ONCE(error); | ||
248 | /* | ||
249 | * It shouldn't be a problem to reuse an opaque stateid value. | ||
250 | * I don't think it is for 4.1. But with 4.0 I worry that, for | ||
251 | * example, a stray write retransmission could be accepted by | ||
252 | * the server when it should have been rejected. Therefore, | ||
253 | * adopt a trick from the sctp code to attempt to maximize the | ||
254 | * amount of time until an id is reused, by ensuring they always | ||
255 | * "increase" (mod INT_MAX): | ||
256 | */ | ||
257 | |||
258 | min_stateid = new_stid+1; | ||
259 | if (min_stateid == INT_MAX) | ||
260 | min_stateid = 0; | ||
261 | return new_stid; | ||
262 | } | ||
263 | |||
264 | static struct nfs4_stid *nfs4_alloc_stid(struct nfs4_client *cl, struct | 233 | static struct nfs4_stid *nfs4_alloc_stid(struct nfs4_client *cl, struct |
265 | kmem_cache *slab) | 234 | kmem_cache *slab) |
266 | { | 235 | { |
@@ -273,9 +242,8 @@ kmem_cache *slab) | |||
273 | if (!stid) | 242 | if (!stid) |
274 | return NULL; | 243 | return NULL; |
275 | 244 | ||
276 | if (!idr_pre_get(stateids, GFP_KERNEL)) | 245 | new_id = idr_alloc(stateids, stid, min_stateid, 0, GFP_KERNEL); |
277 | goto out_free; | 246 | if (new_id < 0) |
278 | if (idr_get_new_above(stateids, stid, min_stateid, &new_id)) | ||
279 | goto out_free; | 247 | goto out_free; |
280 | stid->sc_client = cl; | 248 | stid->sc_client = cl; |
281 | stid->sc_type = 0; | 249 | stid->sc_type = 0; |
@@ -863,6 +863,9 @@ pipe_rdwr_open(struct inode *inode, struct file *filp) | |||
863 | { | 863 | { |
864 | int ret = -ENOENT; | 864 | int ret = -ENOENT; |
865 | 865 | ||
866 | if (!(filp->f_mode & (FMODE_READ|FMODE_WRITE))) | ||
867 | return -EINVAL; | ||
868 | |||
866 | mutex_lock(&inode->i_mutex); | 869 | mutex_lock(&inode->i_mutex); |
867 | 870 | ||
868 | if (inode->i_pipe) { | 871 | if (inode->i_pipe) { |
diff --git a/fs/quota/dquot.c b/fs/quota/dquot.c index 05ae3c97f7a5..3e64169ef527 100644 --- a/fs/quota/dquot.c +++ b/fs/quota/dquot.c | |||
@@ -1439,8 +1439,11 @@ static void __dquot_initialize(struct inode *inode, int type) | |||
1439 | * did a write before quota was turned on | 1439 | * did a write before quota was turned on |
1440 | */ | 1440 | */ |
1441 | rsv = inode_get_rsv_space(inode); | 1441 | rsv = inode_get_rsv_space(inode); |
1442 | if (unlikely(rsv)) | 1442 | if (unlikely(rsv)) { |
1443 | spin_lock(&dq_data_lock); | ||
1443 | dquot_resv_space(inode->i_dquot[cnt], rsv); | 1444 | dquot_resv_space(inode->i_dquot[cnt], rsv); |
1445 | spin_unlock(&dq_data_lock); | ||
1446 | } | ||
1444 | } | 1447 | } |
1445 | } | 1448 | } |
1446 | out_err: | 1449 | out_err: |
diff --git a/fs/reiserfs/super.c b/fs/reiserfs/super.c index 194113b1b11b..f8a23c3078f8 100644 --- a/fs/reiserfs/super.c +++ b/fs/reiserfs/super.c | |||
@@ -1147,8 +1147,7 @@ static int reiserfs_parse_options(struct super_block *s, char *options, /* strin | |||
1147 | "on filesystem root."); | 1147 | "on filesystem root."); |
1148 | return 0; | 1148 | return 0; |
1149 | } | 1149 | } |
1150 | qf_names[qtype] = | 1150 | qf_names[qtype] = kstrdup(arg, GFP_KERNEL); |
1151 | kmalloc(strlen(arg) + 1, GFP_KERNEL); | ||
1152 | if (!qf_names[qtype]) { | 1151 | if (!qf_names[qtype]) { |
1153 | reiserfs_warning(s, "reiserfs-2502", | 1152 | reiserfs_warning(s, "reiserfs-2502", |
1154 | "not enough memory " | 1153 | "not enough memory " |
@@ -1156,7 +1155,6 @@ static int reiserfs_parse_options(struct super_block *s, char *options, /* strin | |||
1156 | "quotafile name."); | 1155 | "quotafile name."); |
1157 | return 0; | 1156 | return 0; |
1158 | } | 1157 | } |
1159 | strcpy(qf_names[qtype], arg); | ||
1160 | if (qtype == USRQUOTA) | 1158 | if (qtype == USRQUOTA) |
1161 | *mount_options |= 1 << REISERFS_USRQUOTA; | 1159 | *mount_options |= 1 << REISERFS_USRQUOTA; |
1162 | else | 1160 | else |
diff --git a/fs/squashfs/super.c b/fs/squashfs/super.c index 260e3928d4f5..60553a9053ca 100644 --- a/fs/squashfs/super.c +++ b/fs/squashfs/super.c | |||
@@ -489,6 +489,7 @@ static struct file_system_type squashfs_fs_type = { | |||
489 | .kill_sb = kill_block_super, | 489 | .kill_sb = kill_block_super, |
490 | .fs_flags = FS_REQUIRES_DEV | 490 | .fs_flags = FS_REQUIRES_DEV |
491 | }; | 491 | }; |
492 | MODULE_ALIAS_FS("squashfs"); | ||
492 | 493 | ||
493 | static const struct super_operations squashfs_super_ops = { | 494 | static const struct super_operations squashfs_super_ops = { |
494 | .alloc_inode = squashfs_alloc_inode, | 495 | .alloc_inode = squashfs_alloc_inode, |
diff --git a/fs/sysv/super.c b/fs/sysv/super.c index a39938b1feea..d0c6a007ce83 100644 --- a/fs/sysv/super.c +++ b/fs/sysv/super.c | |||
@@ -555,6 +555,7 @@ static struct file_system_type v7_fs_type = { | |||
555 | .fs_flags = FS_REQUIRES_DEV, | 555 | .fs_flags = FS_REQUIRES_DEV, |
556 | }; | 556 | }; |
557 | MODULE_ALIAS_FS("v7"); | 557 | MODULE_ALIAS_FS("v7"); |
558 | MODULE_ALIAS("v7"); | ||
558 | 559 | ||
559 | static int __init init_sysv_fs(void) | 560 | static int __init init_sysv_fs(void) |
560 | { | 561 | { |
diff --git a/fs/udf/super.c b/fs/udf/super.c index bc5b30a819e8..9ac4057a86c9 100644 --- a/fs/udf/super.c +++ b/fs/udf/super.c | |||
@@ -118,6 +118,7 @@ static struct file_system_type udf_fstype = { | |||
118 | .kill_sb = kill_block_super, | 118 | .kill_sb = kill_block_super, |
119 | .fs_flags = FS_REQUIRES_DEV, | 119 | .fs_flags = FS_REQUIRES_DEV, |
120 | }; | 120 | }; |
121 | MODULE_ALIAS_FS("udf"); | ||
121 | 122 | ||
122 | static struct kmem_cache *udf_inode_cachep; | 123 | static struct kmem_cache *udf_inode_cachep; |
123 | 124 | ||