aboutsummaryrefslogtreecommitdiffstats
path: root/fs/ext2
diff options
context:
space:
mode:
Diffstat (limited to 'fs/ext2')
-rw-r--r--fs/ext2/dir.c8
-rw-r--r--fs/ext2/ext2.h10
-rw-r--r--fs/ext2/file.c2
-rw-r--r--fs/ext2/namei.c4
-rw-r--r--fs/ext2/super.c6
-rw-r--r--fs/ext2/symlink.c4
6 files changed, 23 insertions, 11 deletions
diff --git a/fs/ext2/dir.c b/fs/ext2/dir.c
index 0b02ba9642d2..e89bfc8cf957 100644
--- a/fs/ext2/dir.c
+++ b/fs/ext2/dir.c
@@ -368,6 +368,14 @@ struct ext2_dir_entry_2 * ext2_find_entry (struct inode * dir,
368 } 368 }
369 if (++n >= npages) 369 if (++n >= npages)
370 n = 0; 370 n = 0;
371 /* next page is past the blocks we've got */
372 if (unlikely(n > (dir->i_blocks >> (PAGE_CACHE_SHIFT - 9)))) {
373 ext2_error(dir->i_sb, __FUNCTION__,
374 "dir %lu size %lld exceeds block count %llu",
375 dir->i_ino, dir->i_size,
376 (unsigned long long)dir->i_blocks);
377 goto out;
378 }
371 } while (n != start); 379 } while (n != start);
372out: 380out:
373 return NULL; 381 return NULL;
diff --git a/fs/ext2/ext2.h b/fs/ext2/ext2.h
index c19ac153f56b..e2a0ea50af1d 100644
--- a/fs/ext2/ext2.h
+++ b/fs/ext2/ext2.h
@@ -158,7 +158,7 @@ extern void ext2_write_super (struct super_block *);
158extern const struct file_operations ext2_dir_operations; 158extern const struct file_operations ext2_dir_operations;
159 159
160/* file.c */ 160/* file.c */
161extern struct inode_operations ext2_file_inode_operations; 161extern const struct inode_operations ext2_file_inode_operations;
162extern const struct file_operations ext2_file_operations; 162extern const struct file_operations ext2_file_operations;
163extern const struct file_operations ext2_xip_file_operations; 163extern const struct file_operations ext2_xip_file_operations;
164 164
@@ -168,9 +168,9 @@ extern const struct address_space_operations ext2_aops_xip;
168extern const struct address_space_operations ext2_nobh_aops; 168extern const struct address_space_operations ext2_nobh_aops;
169 169
170/* namei.c */ 170/* namei.c */
171extern struct inode_operations ext2_dir_inode_operations; 171extern const struct inode_operations ext2_dir_inode_operations;
172extern struct inode_operations ext2_special_inode_operations; 172extern const struct inode_operations ext2_special_inode_operations;
173 173
174/* symlink.c */ 174/* symlink.c */
175extern struct inode_operations ext2_fast_symlink_inode_operations; 175extern const struct inode_operations ext2_fast_symlink_inode_operations;
176extern struct inode_operations ext2_symlink_inode_operations; 176extern const struct inode_operations ext2_symlink_inode_operations;
diff --git a/fs/ext2/file.c b/fs/ext2/file.c
index 2dba473c524a..566d4e2d3852 100644
--- a/fs/ext2/file.c
+++ b/fs/ext2/file.c
@@ -75,7 +75,7 @@ const struct file_operations ext2_xip_file_operations = {
75}; 75};
76#endif 76#endif
77 77
78struct inode_operations ext2_file_inode_operations = { 78const struct inode_operations ext2_file_inode_operations = {
79 .truncate = ext2_truncate, 79 .truncate = ext2_truncate,
80#ifdef CONFIG_EXT2_FS_XATTR 80#ifdef CONFIG_EXT2_FS_XATTR
81 .setxattr = generic_setxattr, 81 .setxattr = generic_setxattr,
diff --git a/fs/ext2/namei.c b/fs/ext2/namei.c
index e1af5b4cf80c..e69beed839ac 100644
--- a/fs/ext2/namei.c
+++ b/fs/ext2/namei.c
@@ -373,7 +373,7 @@ out:
373 return err; 373 return err;
374} 374}
375 375
376struct inode_operations ext2_dir_inode_operations = { 376const struct inode_operations ext2_dir_inode_operations = {
377 .create = ext2_create, 377 .create = ext2_create,
378 .lookup = ext2_lookup, 378 .lookup = ext2_lookup,
379 .link = ext2_link, 379 .link = ext2_link,
@@ -393,7 +393,7 @@ struct inode_operations ext2_dir_inode_operations = {
393 .permission = ext2_permission, 393 .permission = ext2_permission,
394}; 394};
395 395
396struct inode_operations ext2_special_inode_operations = { 396const struct inode_operations ext2_special_inode_operations = {
397#ifdef CONFIG_EXT2_FS_XATTR 397#ifdef CONFIG_EXT2_FS_XATTR
398 .setxattr = generic_setxattr, 398 .setxattr = generic_setxattr,
399 .getxattr = generic_getxattr, 399 .getxattr = generic_getxattr,
diff --git a/fs/ext2/super.c b/fs/ext2/super.c
index 6347c2dbdd81..a046a419d8af 100644
--- a/fs/ext2/super.c
+++ b/fs/ext2/super.c
@@ -231,7 +231,7 @@ static ssize_t ext2_quota_read(struct super_block *sb, int type, char *data, siz
231static ssize_t ext2_quota_write(struct super_block *sb, int type, const char *data, size_t len, loff_t off); 231static ssize_t ext2_quota_write(struct super_block *sb, int type, const char *data, size_t len, loff_t off);
232#endif 232#endif
233 233
234static struct super_operations ext2_sops = { 234static const struct super_operations ext2_sops = {
235 .alloc_inode = ext2_alloc_inode, 235 .alloc_inode = ext2_alloc_inode,
236 .destroy_inode = ext2_destroy_inode, 236 .destroy_inode = ext2_destroy_inode,
237 .read_inode = ext2_read_inode, 237 .read_inode = ext2_read_inode,
@@ -708,10 +708,14 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
708 set_opt(sbi->s_mount_opt, GRPID); 708 set_opt(sbi->s_mount_opt, GRPID);
709 if (def_mount_opts & EXT2_DEFM_UID16) 709 if (def_mount_opts & EXT2_DEFM_UID16)
710 set_opt(sbi->s_mount_opt, NO_UID32); 710 set_opt(sbi->s_mount_opt, NO_UID32);
711#ifdef CONFIG_EXT2_FS_XATTR
711 if (def_mount_opts & EXT2_DEFM_XATTR_USER) 712 if (def_mount_opts & EXT2_DEFM_XATTR_USER)
712 set_opt(sbi->s_mount_opt, XATTR_USER); 713 set_opt(sbi->s_mount_opt, XATTR_USER);
714#endif
715#ifdef CONFIG_EXT2_FS_POSIX_ACL
713 if (def_mount_opts & EXT2_DEFM_ACL) 716 if (def_mount_opts & EXT2_DEFM_ACL)
714 set_opt(sbi->s_mount_opt, POSIX_ACL); 717 set_opt(sbi->s_mount_opt, POSIX_ACL);
718#endif
715 719
716 if (le16_to_cpu(sbi->s_es->s_errors) == EXT2_ERRORS_PANIC) 720 if (le16_to_cpu(sbi->s_es->s_errors) == EXT2_ERRORS_PANIC)
717 set_opt(sbi->s_mount_opt, ERRORS_PANIC); 721 set_opt(sbi->s_mount_opt, ERRORS_PANIC);
diff --git a/fs/ext2/symlink.c b/fs/ext2/symlink.c
index 1e67d87cfa91..4e2426e22bbe 100644
--- a/fs/ext2/symlink.c
+++ b/fs/ext2/symlink.c
@@ -28,7 +28,7 @@ static void *ext2_follow_link(struct dentry *dentry, struct nameidata *nd)
28 return NULL; 28 return NULL;
29} 29}
30 30
31struct inode_operations ext2_symlink_inode_operations = { 31const struct inode_operations ext2_symlink_inode_operations = {
32 .readlink = generic_readlink, 32 .readlink = generic_readlink,
33 .follow_link = page_follow_link_light, 33 .follow_link = page_follow_link_light,
34 .put_link = page_put_link, 34 .put_link = page_put_link,
@@ -40,7 +40,7 @@ struct inode_operations ext2_symlink_inode_operations = {
40#endif 40#endif
41}; 41};
42 42
43struct inode_operations ext2_fast_symlink_inode_operations = { 43const struct inode_operations ext2_fast_symlink_inode_operations = {
44 .readlink = generic_readlink, 44 .readlink = generic_readlink,
45 .follow_link = ext2_follow_link, 45 .follow_link = ext2_follow_link,
46#ifdef CONFIG_EXT2_FS_XATTR 46#ifdef CONFIG_EXT2_FS_XATTR