summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/staging/lustre/lustre/llite/file.c3
-rw-r--r--drivers/staging/lustre/lustre/llite/namei.c6
-rw-r--r--drivers/staging/lustre/lustre/llite/symlink.c3
-rw-r--r--fs/9p/vfs_inode_dotl.c9
-rw-r--r--fs/btrfs/inode.c12
-rw-r--r--fs/ceph/dir.c3
-rw-r--r--fs/ceph/inode.c6
-rw-r--r--fs/cifs/cifsfs.c9
-rw-r--r--fs/ecryptfs/inode.c9
-rw-r--r--fs/ext2/file.c3
-rw-r--r--fs/ext2/namei.c6
-rw-r--r--fs/ext2/symlink.c6
-rw-r--r--fs/ext4/file.c3
-rw-r--r--fs/ext4/namei.c6
-rw-r--r--fs/ext4/symlink.c9
-rw-r--r--fs/f2fs/file.c3
-rw-r--r--fs/f2fs/namei.c12
-rw-r--r--fs/fuse/dir.c9
-rw-r--r--fs/gfs2/inode.c9
-rw-r--r--fs/hfs/inode.c2
-rw-r--r--fs/hfsplus/dir.c3
-rw-r--r--fs/hfsplus/inode.c3
-rw-r--r--fs/jffs2/dir.c3
-rw-r--r--fs/jffs2/file.c3
-rw-r--r--fs/jffs2/symlink.c3
-rw-r--r--fs/jfs/file.c3
-rw-r--r--fs/jfs/namei.c3
-rw-r--r--fs/jfs/symlink.c6
-rw-r--r--fs/kernfs/dir.c3
-rw-r--r--fs/kernfs/inode.c3
-rw-r--r--fs/kernfs/symlink.c3
-rw-r--r--fs/nfs/nfs3proc.c6
-rw-r--r--fs/nfs/nfs4proc.c6
-rw-r--r--fs/ocfs2/file.c3
-rw-r--r--fs/ocfs2/namei.c3
-rw-r--r--fs/ocfs2/symlink.c3
-rw-r--r--fs/orangefs/inode.c3
-rw-r--r--fs/orangefs/namei.c3
-rw-r--r--fs/orangefs/symlink.c1
-rw-r--r--fs/overlayfs/dir.c3
-rw-r--r--fs/overlayfs/inode.c6
-rw-r--r--fs/reiserfs/file.c3
-rw-r--r--fs/reiserfs/namei.c9
-rw-r--r--fs/squashfs/inode.c1
-rw-r--r--fs/squashfs/namei.c1
-rw-r--r--fs/squashfs/symlink.c1
-rw-r--r--fs/squashfs/xattr.h1
-rw-r--r--fs/ubifs/dir.c3
-rw-r--r--fs/ubifs/file.c6
-rw-r--r--fs/xattr.c53
-rw-r--r--fs/xfs/xfs_iops.c15
-rw-r--r--include/linux/fs.h5
-rw-r--r--include/linux/xattr.h4
-rw-r--r--mm/shmem.c15
-rw-r--r--net/socket.c1
55 files changed, 0 insertions, 319 deletions
diff --git a/drivers/staging/lustre/lustre/llite/file.c b/drivers/staging/lustre/lustre/llite/file.c
index 58a7401046e0..e8c81e821188 100644
--- a/drivers/staging/lustre/lustre/llite/file.c
+++ b/drivers/staging/lustre/lustre/llite/file.c
@@ -3213,10 +3213,7 @@ const struct inode_operations ll_file_inode_operations = {
3213 .setattr = ll_setattr, 3213 .setattr = ll_setattr,
3214 .getattr = ll_getattr, 3214 .getattr = ll_getattr,
3215 .permission = ll_inode_permission, 3215 .permission = ll_inode_permission,
3216 .setxattr = generic_setxattr,
3217 .getxattr = generic_getxattr,
3218 .listxattr = ll_listxattr, 3216 .listxattr = ll_listxattr,
3219 .removexattr = generic_removexattr,
3220 .fiemap = ll_fiemap, 3217 .fiemap = ll_fiemap,
3221 .get_acl = ll_get_acl, 3218 .get_acl = ll_get_acl,
3222}; 3219};
diff --git a/drivers/staging/lustre/lustre/llite/namei.c b/drivers/staging/lustre/lustre/llite/namei.c
index 09e180170de2..f9822403026e 100644
--- a/drivers/staging/lustre/lustre/llite/namei.c
+++ b/drivers/staging/lustre/lustre/llite/namei.c
@@ -1106,10 +1106,7 @@ const struct inode_operations ll_dir_inode_operations = {
1106 .setattr = ll_setattr, 1106 .setattr = ll_setattr,
1107 .getattr = ll_getattr, 1107 .getattr = ll_getattr,
1108 .permission = ll_inode_permission, 1108 .permission = ll_inode_permission,
1109 .setxattr = generic_setxattr,
1110 .getxattr = generic_getxattr,
1111 .listxattr = ll_listxattr, 1109 .listxattr = ll_listxattr,
1112 .removexattr = generic_removexattr,
1113 .get_acl = ll_get_acl, 1110 .get_acl = ll_get_acl,
1114}; 1111};
1115 1112
@@ -1117,9 +1114,6 @@ const struct inode_operations ll_special_inode_operations = {
1117 .setattr = ll_setattr, 1114 .setattr = ll_setattr,
1118 .getattr = ll_getattr, 1115 .getattr = ll_getattr,
1119 .permission = ll_inode_permission, 1116 .permission = ll_inode_permission,
1120 .setxattr = generic_setxattr,
1121 .getxattr = generic_getxattr,
1122 .listxattr = ll_listxattr, 1117 .listxattr = ll_listxattr,
1123 .removexattr = generic_removexattr,
1124 .get_acl = ll_get_acl, 1118 .get_acl = ll_get_acl,
1125}; 1119};
diff --git a/drivers/staging/lustre/lustre/llite/symlink.c b/drivers/staging/lustre/lustre/llite/symlink.c
index 4601be94dd22..d82dab2cc6f6 100644
--- a/drivers/staging/lustre/lustre/llite/symlink.c
+++ b/drivers/staging/lustre/lustre/llite/symlink.c
@@ -155,8 +155,5 @@ const struct inode_operations ll_fast_symlink_inode_operations = {
155 .get_link = ll_get_link, 155 .get_link = ll_get_link,
156 .getattr = ll_getattr, 156 .getattr = ll_getattr,
157 .permission = ll_inode_permission, 157 .permission = ll_inode_permission,
158 .setxattr = generic_setxattr,
159 .getxattr = generic_getxattr,
160 .listxattr = ll_listxattr, 158 .listxattr = ll_listxattr,
161 .removexattr = generic_removexattr,
162}; 159};
diff --git a/fs/9p/vfs_inode_dotl.c b/fs/9p/vfs_inode_dotl.c
index eeabcb0bad12..d8220efdd752 100644
--- a/fs/9p/vfs_inode_dotl.c
+++ b/fs/9p/vfs_inode_dotl.c
@@ -967,9 +967,6 @@ const struct inode_operations v9fs_dir_inode_operations_dotl = {
967 .rename = v9fs_vfs_rename, 967 .rename = v9fs_vfs_rename,
968 .getattr = v9fs_vfs_getattr_dotl, 968 .getattr = v9fs_vfs_getattr_dotl,
969 .setattr = v9fs_vfs_setattr_dotl, 969 .setattr = v9fs_vfs_setattr_dotl,
970 .setxattr = generic_setxattr,
971 .getxattr = generic_getxattr,
972 .removexattr = generic_removexattr,
973 .listxattr = v9fs_listxattr, 970 .listxattr = v9fs_listxattr,
974 .get_acl = v9fs_iop_get_acl, 971 .get_acl = v9fs_iop_get_acl,
975}; 972};
@@ -977,9 +974,6 @@ const struct inode_operations v9fs_dir_inode_operations_dotl = {
977const struct inode_operations v9fs_file_inode_operations_dotl = { 974const struct inode_operations v9fs_file_inode_operations_dotl = {
978 .getattr = v9fs_vfs_getattr_dotl, 975 .getattr = v9fs_vfs_getattr_dotl,
979 .setattr = v9fs_vfs_setattr_dotl, 976 .setattr = v9fs_vfs_setattr_dotl,
980 .setxattr = generic_setxattr,
981 .getxattr = generic_getxattr,
982 .removexattr = generic_removexattr,
983 .listxattr = v9fs_listxattr, 977 .listxattr = v9fs_listxattr,
984 .get_acl = v9fs_iop_get_acl, 978 .get_acl = v9fs_iop_get_acl,
985}; 979};
@@ -989,8 +983,5 @@ const struct inode_operations v9fs_symlink_inode_operations_dotl = {
989 .get_link = v9fs_vfs_get_link_dotl, 983 .get_link = v9fs_vfs_get_link_dotl,
990 .getattr = v9fs_vfs_getattr_dotl, 984 .getattr = v9fs_vfs_getattr_dotl,
991 .setattr = v9fs_vfs_setattr_dotl, 985 .setattr = v9fs_vfs_setattr_dotl,
992 .setxattr = generic_setxattr,
993 .getxattr = generic_getxattr,
994 .removexattr = generic_removexattr,
995 .listxattr = v9fs_listxattr, 986 .listxattr = v9fs_listxattr,
996}; 987};
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index e6811c42e41e..d06c6a288512 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -10570,10 +10570,7 @@ static const struct inode_operations btrfs_dir_inode_operations = {
10570 .symlink = btrfs_symlink, 10570 .symlink = btrfs_symlink,
10571 .setattr = btrfs_setattr, 10571 .setattr = btrfs_setattr,
10572 .mknod = btrfs_mknod, 10572 .mknod = btrfs_mknod,
10573 .setxattr = generic_setxattr,
10574 .getxattr = generic_getxattr,
10575 .listxattr = btrfs_listxattr, 10573 .listxattr = btrfs_listxattr,
10576 .removexattr = generic_removexattr,
10577 .permission = btrfs_permission, 10574 .permission = btrfs_permission,
10578 .get_acl = btrfs_get_acl, 10575 .get_acl = btrfs_get_acl,
10579 .set_acl = btrfs_set_acl, 10576 .set_acl = btrfs_set_acl,
@@ -10647,10 +10644,7 @@ static const struct address_space_operations btrfs_symlink_aops = {
10647static const struct inode_operations btrfs_file_inode_operations = { 10644static const struct inode_operations btrfs_file_inode_operations = {
10648 .getattr = btrfs_getattr, 10645 .getattr = btrfs_getattr,
10649 .setattr = btrfs_setattr, 10646 .setattr = btrfs_setattr,
10650 .setxattr = generic_setxattr,
10651 .getxattr = generic_getxattr,
10652 .listxattr = btrfs_listxattr, 10647 .listxattr = btrfs_listxattr,
10653 .removexattr = generic_removexattr,
10654 .permission = btrfs_permission, 10648 .permission = btrfs_permission,
10655 .fiemap = btrfs_fiemap, 10649 .fiemap = btrfs_fiemap,
10656 .get_acl = btrfs_get_acl, 10650 .get_acl = btrfs_get_acl,
@@ -10661,10 +10655,7 @@ static const struct inode_operations btrfs_special_inode_operations = {
10661 .getattr = btrfs_getattr, 10655 .getattr = btrfs_getattr,
10662 .setattr = btrfs_setattr, 10656 .setattr = btrfs_setattr,
10663 .permission = btrfs_permission, 10657 .permission = btrfs_permission,
10664 .setxattr = generic_setxattr,
10665 .getxattr = generic_getxattr,
10666 .listxattr = btrfs_listxattr, 10658 .listxattr = btrfs_listxattr,
10667 .removexattr = generic_removexattr,
10668 .get_acl = btrfs_get_acl, 10659 .get_acl = btrfs_get_acl,
10669 .set_acl = btrfs_set_acl, 10660 .set_acl = btrfs_set_acl,
10670 .update_time = btrfs_update_time, 10661 .update_time = btrfs_update_time,
@@ -10675,10 +10666,7 @@ static const struct inode_operations btrfs_symlink_inode_operations = {
10675 .getattr = btrfs_getattr, 10666 .getattr = btrfs_getattr,
10676 .setattr = btrfs_setattr, 10667 .setattr = btrfs_setattr,
10677 .permission = btrfs_permission, 10668 .permission = btrfs_permission,
10678 .setxattr = generic_setxattr,
10679 .getxattr = generic_getxattr,
10680 .listxattr = btrfs_listxattr, 10669 .listxattr = btrfs_listxattr,
10681 .removexattr = generic_removexattr,
10682 .update_time = btrfs_update_time, 10670 .update_time = btrfs_update_time,
10683}; 10671};
10684 10672
diff --git a/fs/ceph/dir.c b/fs/ceph/dir.c
index df4b3e6fa563..e33bd0933396 100644
--- a/fs/ceph/dir.c
+++ b/fs/ceph/dir.c
@@ -1486,10 +1486,7 @@ const struct inode_operations ceph_dir_iops = {
1486 .permission = ceph_permission, 1486 .permission = ceph_permission,
1487 .getattr = ceph_getattr, 1487 .getattr = ceph_getattr,
1488 .setattr = ceph_setattr, 1488 .setattr = ceph_setattr,
1489 .setxattr = generic_setxattr,
1490 .getxattr = generic_getxattr,
1491 .listxattr = ceph_listxattr, 1489 .listxattr = ceph_listxattr,
1492 .removexattr = generic_removexattr,
1493 .get_acl = ceph_get_acl, 1490 .get_acl = ceph_get_acl,
1494 .set_acl = ceph_set_acl, 1491 .set_acl = ceph_set_acl,
1495 .mknod = ceph_mknod, 1492 .mknod = ceph_mknod,
diff --git a/fs/ceph/inode.c b/fs/ceph/inode.c
index dd3a6dbf71eb..e70b4f535c79 100644
--- a/fs/ceph/inode.c
+++ b/fs/ceph/inode.c
@@ -94,10 +94,7 @@ const struct inode_operations ceph_file_iops = {
94 .permission = ceph_permission, 94 .permission = ceph_permission,
95 .setattr = ceph_setattr, 95 .setattr = ceph_setattr,
96 .getattr = ceph_getattr, 96 .getattr = ceph_getattr,
97 .setxattr = generic_setxattr,
98 .getxattr = generic_getxattr,
99 .listxattr = ceph_listxattr, 97 .listxattr = ceph_listxattr,
100 .removexattr = generic_removexattr,
101 .get_acl = ceph_get_acl, 98 .get_acl = ceph_get_acl,
102 .set_acl = ceph_set_acl, 99 .set_acl = ceph_set_acl,
103}; 100};
@@ -1885,10 +1882,7 @@ static const struct inode_operations ceph_symlink_iops = {
1885 .get_link = simple_get_link, 1882 .get_link = simple_get_link,
1886 .setattr = ceph_setattr, 1883 .setattr = ceph_setattr,
1887 .getattr = ceph_getattr, 1884 .getattr = ceph_getattr,
1888 .setxattr = generic_setxattr,
1889 .getxattr = generic_getxattr,
1890 .listxattr = ceph_listxattr, 1885 .listxattr = ceph_listxattr,
1891 .removexattr = generic_removexattr,
1892}; 1886};
1893 1887
1894int __ceph_setattr(struct inode *inode, struct iattr *attr) 1888int __ceph_setattr(struct inode *inode, struct iattr *attr)
diff --git a/fs/cifs/cifsfs.c b/fs/cifs/cifsfs.c
index 14ae4b8e1a3c..34aac1c73ee1 100644
--- a/fs/cifs/cifsfs.c
+++ b/fs/cifs/cifsfs.c
@@ -901,30 +901,21 @@ const struct inode_operations cifs_dir_inode_ops = {
901 .setattr = cifs_setattr, 901 .setattr = cifs_setattr,
902 .symlink = cifs_symlink, 902 .symlink = cifs_symlink,
903 .mknod = cifs_mknod, 903 .mknod = cifs_mknod,
904 .setxattr = generic_setxattr,
905 .getxattr = generic_getxattr,
906 .listxattr = cifs_listxattr, 904 .listxattr = cifs_listxattr,
907 .removexattr = generic_removexattr,
908}; 905};
909 906
910const struct inode_operations cifs_file_inode_ops = { 907const struct inode_operations cifs_file_inode_ops = {
911 .setattr = cifs_setattr, 908 .setattr = cifs_setattr,
912 .getattr = cifs_getattr, 909 .getattr = cifs_getattr,
913 .permission = cifs_permission, 910 .permission = cifs_permission,
914 .setxattr = generic_setxattr,
915 .getxattr = generic_getxattr,
916 .listxattr = cifs_listxattr, 911 .listxattr = cifs_listxattr,
917 .removexattr = generic_removexattr,
918}; 912};
919 913
920const struct inode_operations cifs_symlink_inode_ops = { 914const struct inode_operations cifs_symlink_inode_ops = {
921 .readlink = generic_readlink, 915 .readlink = generic_readlink,
922 .get_link = cifs_get_link, 916 .get_link = cifs_get_link,
923 .permission = cifs_permission, 917 .permission = cifs_permission,
924 .setxattr = generic_setxattr,
925 .getxattr = generic_getxattr,
926 .listxattr = cifs_listxattr, 918 .listxattr = cifs_listxattr,
927 .removexattr = generic_removexattr,
928}; 919};
929 920
930static int cifs_clone_file_range(struct file *src_file, loff_t off, 921static int cifs_clone_file_range(struct file *src_file, loff_t off,
diff --git a/fs/ecryptfs/inode.c b/fs/ecryptfs/inode.c
index 32fee255d7b5..3f2575ddd45e 100644
--- a/fs/ecryptfs/inode.c
+++ b/fs/ecryptfs/inode.c
@@ -1090,10 +1090,7 @@ const struct inode_operations ecryptfs_symlink_iops = {
1090 .permission = ecryptfs_permission, 1090 .permission = ecryptfs_permission,
1091 .setattr = ecryptfs_setattr, 1091 .setattr = ecryptfs_setattr,
1092 .getattr = ecryptfs_getattr_link, 1092 .getattr = ecryptfs_getattr_link,
1093 .setxattr = generic_setxattr,
1094 .getxattr = generic_getxattr,
1095 .listxattr = ecryptfs_listxattr, 1093 .listxattr = ecryptfs_listxattr,
1096 .removexattr = generic_removexattr
1097}; 1094};
1098 1095
1099const struct inode_operations ecryptfs_dir_iops = { 1096const struct inode_operations ecryptfs_dir_iops = {
@@ -1108,20 +1105,14 @@ const struct inode_operations ecryptfs_dir_iops = {
1108 .rename = ecryptfs_rename, 1105 .rename = ecryptfs_rename,
1109 .permission = ecryptfs_permission, 1106 .permission = ecryptfs_permission,
1110 .setattr = ecryptfs_setattr, 1107 .setattr = ecryptfs_setattr,
1111 .setxattr = generic_setxattr,
1112 .getxattr = generic_getxattr,
1113 .listxattr = ecryptfs_listxattr, 1108 .listxattr = ecryptfs_listxattr,
1114 .removexattr = generic_removexattr
1115}; 1109};
1116 1110
1117const struct inode_operations ecryptfs_main_iops = { 1111const struct inode_operations ecryptfs_main_iops = {
1118 .permission = ecryptfs_permission, 1112 .permission = ecryptfs_permission,
1119 .setattr = ecryptfs_setattr, 1113 .setattr = ecryptfs_setattr,
1120 .getattr = ecryptfs_getattr, 1114 .getattr = ecryptfs_getattr,
1121 .setxattr = generic_setxattr,
1122 .getxattr = generic_getxattr,
1123 .listxattr = ecryptfs_listxattr, 1115 .listxattr = ecryptfs_listxattr,
1124 .removexattr = generic_removexattr
1125}; 1116};
1126 1117
1127static int ecryptfs_xattr_get(const struct xattr_handler *handler, 1118static int ecryptfs_xattr_get(const struct xattr_handler *handler,
diff --git a/fs/ext2/file.c b/fs/ext2/file.c
index 5efeefe17abb..538f77616f3c 100644
--- a/fs/ext2/file.c
+++ b/fs/ext2/file.c
@@ -178,10 +178,7 @@ const struct file_operations ext2_file_operations = {
178 178
179const struct inode_operations ext2_file_inode_operations = { 179const struct inode_operations ext2_file_inode_operations = {
180#ifdef CONFIG_EXT2_FS_XATTR 180#ifdef CONFIG_EXT2_FS_XATTR
181 .setxattr = generic_setxattr,
182 .getxattr = generic_getxattr,
183 .listxattr = ext2_listxattr, 181 .listxattr = ext2_listxattr,
184 .removexattr = generic_removexattr,
185#endif 182#endif
186 .setattr = ext2_setattr, 183 .setattr = ext2_setattr,
187 .get_acl = ext2_get_acl, 184 .get_acl = ext2_get_acl,
diff --git a/fs/ext2/namei.c b/fs/ext2/namei.c
index d446203127fc..ff32ea799496 100644
--- a/fs/ext2/namei.c
+++ b/fs/ext2/namei.c
@@ -428,10 +428,7 @@ const struct inode_operations ext2_dir_inode_operations = {
428 .mknod = ext2_mknod, 428 .mknod = ext2_mknod,
429 .rename = ext2_rename, 429 .rename = ext2_rename,
430#ifdef CONFIG_EXT2_FS_XATTR 430#ifdef CONFIG_EXT2_FS_XATTR
431 .setxattr = generic_setxattr,
432 .getxattr = generic_getxattr,
433 .listxattr = ext2_listxattr, 431 .listxattr = ext2_listxattr,
434 .removexattr = generic_removexattr,
435#endif 432#endif
436 .setattr = ext2_setattr, 433 .setattr = ext2_setattr,
437 .get_acl = ext2_get_acl, 434 .get_acl = ext2_get_acl,
@@ -441,10 +438,7 @@ const struct inode_operations ext2_dir_inode_operations = {
441 438
442const struct inode_operations ext2_special_inode_operations = { 439const struct inode_operations ext2_special_inode_operations = {
443#ifdef CONFIG_EXT2_FS_XATTR 440#ifdef CONFIG_EXT2_FS_XATTR
444 .setxattr = generic_setxattr,
445 .getxattr = generic_getxattr,
446 .listxattr = ext2_listxattr, 441 .listxattr = ext2_listxattr,
447 .removexattr = generic_removexattr,
448#endif 442#endif
449 .setattr = ext2_setattr, 443 .setattr = ext2_setattr,
450 .get_acl = ext2_get_acl, 444 .get_acl = ext2_get_acl,
diff --git a/fs/ext2/symlink.c b/fs/ext2/symlink.c
index 3495d8ae4b33..8437b191bf5d 100644
--- a/fs/ext2/symlink.c
+++ b/fs/ext2/symlink.c
@@ -25,10 +25,7 @@ const struct inode_operations ext2_symlink_inode_operations = {
25 .get_link = page_get_link, 25 .get_link = page_get_link,
26 .setattr = ext2_setattr, 26 .setattr = ext2_setattr,
27#ifdef CONFIG_EXT2_FS_XATTR 27#ifdef CONFIG_EXT2_FS_XATTR
28 .setxattr = generic_setxattr,
29 .getxattr = generic_getxattr,
30 .listxattr = ext2_listxattr, 28 .listxattr = ext2_listxattr,
31 .removexattr = generic_removexattr,
32#endif 29#endif
33}; 30};
34 31
@@ -37,9 +34,6 @@ const struct inode_operations ext2_fast_symlink_inode_operations = {
37 .get_link = simple_get_link, 34 .get_link = simple_get_link,
38 .setattr = ext2_setattr, 35 .setattr = ext2_setattr,
39#ifdef CONFIG_EXT2_FS_XATTR 36#ifdef CONFIG_EXT2_FS_XATTR
40 .setxattr = generic_setxattr,
41 .getxattr = generic_getxattr,
42 .listxattr = ext2_listxattr, 37 .listxattr = ext2_listxattr,
43 .removexattr = generic_removexattr,
44#endif 38#endif
45}; 39};
diff --git a/fs/ext4/file.c b/fs/ext4/file.c
index 261ac3734c58..93072dbcb3ac 100644
--- a/fs/ext4/file.c
+++ b/fs/ext4/file.c
@@ -711,10 +711,7 @@ const struct file_operations ext4_file_operations = {
711const struct inode_operations ext4_file_inode_operations = { 711const struct inode_operations ext4_file_inode_operations = {
712 .setattr = ext4_setattr, 712 .setattr = ext4_setattr,
713 .getattr = ext4_getattr, 713 .getattr = ext4_getattr,
714 .setxattr = generic_setxattr,
715 .getxattr = generic_getxattr,
716 .listxattr = ext4_listxattr, 714 .listxattr = ext4_listxattr,
717 .removexattr = generic_removexattr,
718 .get_acl = ext4_get_acl, 715 .get_acl = ext4_get_acl,
719 .set_acl = ext4_set_acl, 716 .set_acl = ext4_set_acl,
720 .fiemap = ext4_fiemap, 717 .fiemap = ext4_fiemap,
diff --git a/fs/ext4/namei.c b/fs/ext4/namei.c
index 34c0142caf6a..ddc309e8471e 100644
--- a/fs/ext4/namei.c
+++ b/fs/ext4/namei.c
@@ -3882,10 +3882,7 @@ const struct inode_operations ext4_dir_inode_operations = {
3882 .tmpfile = ext4_tmpfile, 3882 .tmpfile = ext4_tmpfile,
3883 .rename2 = ext4_rename2, 3883 .rename2 = ext4_rename2,
3884 .setattr = ext4_setattr, 3884 .setattr = ext4_setattr,
3885 .setxattr = generic_setxattr,
3886 .getxattr = generic_getxattr,
3887 .listxattr = ext4_listxattr, 3885 .listxattr = ext4_listxattr,
3888 .removexattr = generic_removexattr,
3889 .get_acl = ext4_get_acl, 3886 .get_acl = ext4_get_acl,
3890 .set_acl = ext4_set_acl, 3887 .set_acl = ext4_set_acl,
3891 .fiemap = ext4_fiemap, 3888 .fiemap = ext4_fiemap,
@@ -3893,10 +3890,7 @@ const struct inode_operations ext4_dir_inode_operations = {
3893 3890
3894const struct inode_operations ext4_special_inode_operations = { 3891const struct inode_operations ext4_special_inode_operations = {
3895 .setattr = ext4_setattr, 3892 .setattr = ext4_setattr,
3896 .setxattr = generic_setxattr,
3897 .getxattr = generic_getxattr,
3898 .listxattr = ext4_listxattr, 3893 .listxattr = ext4_listxattr,
3899 .removexattr = generic_removexattr,
3900 .get_acl = ext4_get_acl, 3894 .get_acl = ext4_get_acl,
3901 .set_acl = ext4_set_acl, 3895 .set_acl = ext4_set_acl,
3902}; 3896};
diff --git a/fs/ext4/symlink.c b/fs/ext4/symlink.c
index 4d83d9e05f2e..128ea78b8958 100644
--- a/fs/ext4/symlink.c
+++ b/fs/ext4/symlink.c
@@ -90,28 +90,19 @@ const struct inode_operations ext4_encrypted_symlink_inode_operations = {
90 .readlink = generic_readlink, 90 .readlink = generic_readlink,
91 .get_link = ext4_encrypted_get_link, 91 .get_link = ext4_encrypted_get_link,
92 .setattr = ext4_setattr, 92 .setattr = ext4_setattr,
93 .setxattr = generic_setxattr,
94 .getxattr = generic_getxattr,
95 .listxattr = ext4_listxattr, 93 .listxattr = ext4_listxattr,
96 .removexattr = generic_removexattr,
97}; 94};
98 95
99const struct inode_operations ext4_symlink_inode_operations = { 96const struct inode_operations ext4_symlink_inode_operations = {
100 .readlink = generic_readlink, 97 .readlink = generic_readlink,
101 .get_link = page_get_link, 98 .get_link = page_get_link,
102 .setattr = ext4_setattr, 99 .setattr = ext4_setattr,
103 .setxattr = generic_setxattr,
104 .getxattr = generic_getxattr,
105 .listxattr = ext4_listxattr, 100 .listxattr = ext4_listxattr,
106 .removexattr = generic_removexattr,
107}; 101};
108 102
109const struct inode_operations ext4_fast_symlink_inode_operations = { 103const struct inode_operations ext4_fast_symlink_inode_operations = {
110 .readlink = generic_readlink, 104 .readlink = generic_readlink,
111 .get_link = simple_get_link, 105 .get_link = simple_get_link,
112 .setattr = ext4_setattr, 106 .setattr = ext4_setattr,
113 .setxattr = generic_setxattr,
114 .getxattr = generic_getxattr,
115 .listxattr = ext4_listxattr, 107 .listxattr = ext4_listxattr,
116 .removexattr = generic_removexattr,
117}; 108};
diff --git a/fs/f2fs/file.c b/fs/f2fs/file.c
index 28f4f4cbb8d8..2ebc4c79562c 100644
--- a/fs/f2fs/file.c
+++ b/fs/f2fs/file.c
@@ -732,10 +732,7 @@ const struct inode_operations f2fs_file_inode_operations = {
732 .get_acl = f2fs_get_acl, 732 .get_acl = f2fs_get_acl,
733 .set_acl = f2fs_set_acl, 733 .set_acl = f2fs_set_acl,
734#ifdef CONFIG_F2FS_FS_XATTR 734#ifdef CONFIG_F2FS_FS_XATTR
735 .setxattr = generic_setxattr,
736 .getxattr = generic_getxattr,
737 .listxattr = f2fs_listxattr, 735 .listxattr = f2fs_listxattr,
738 .removexattr = generic_removexattr,
739#endif 736#endif
740 .fiemap = f2fs_fiemap, 737 .fiemap = f2fs_fiemap,
741}; 738};
diff --git a/fs/f2fs/namei.c b/fs/f2fs/namei.c
index 73fa356f8fbb..1c481c9dc088 100644
--- a/fs/f2fs/namei.c
+++ b/fs/f2fs/namei.c
@@ -1077,10 +1077,7 @@ const struct inode_operations f2fs_encrypted_symlink_inode_operations = {
1077 .getattr = f2fs_getattr, 1077 .getattr = f2fs_getattr,
1078 .setattr = f2fs_setattr, 1078 .setattr = f2fs_setattr,
1079#ifdef CONFIG_F2FS_FS_XATTR 1079#ifdef CONFIG_F2FS_FS_XATTR
1080 .setxattr = generic_setxattr,
1081 .getxattr = generic_getxattr,
1082 .listxattr = f2fs_listxattr, 1080 .listxattr = f2fs_listxattr,
1083 .removexattr = generic_removexattr,
1084#endif 1081#endif
1085}; 1082};
1086 1083
@@ -1100,10 +1097,7 @@ const struct inode_operations f2fs_dir_inode_operations = {
1100 .get_acl = f2fs_get_acl, 1097 .get_acl = f2fs_get_acl,
1101 .set_acl = f2fs_set_acl, 1098 .set_acl = f2fs_set_acl,
1102#ifdef CONFIG_F2FS_FS_XATTR 1099#ifdef CONFIG_F2FS_FS_XATTR
1103 .setxattr = generic_setxattr,
1104 .getxattr = generic_getxattr,
1105 .listxattr = f2fs_listxattr, 1100 .listxattr = f2fs_listxattr,
1106 .removexattr = generic_removexattr,
1107#endif 1101#endif
1108}; 1102};
1109 1103
@@ -1113,10 +1107,7 @@ const struct inode_operations f2fs_symlink_inode_operations = {
1113 .getattr = f2fs_getattr, 1107 .getattr = f2fs_getattr,
1114 .setattr = f2fs_setattr, 1108 .setattr = f2fs_setattr,
1115#ifdef CONFIG_F2FS_FS_XATTR 1109#ifdef CONFIG_F2FS_FS_XATTR
1116 .setxattr = generic_setxattr,
1117 .getxattr = generic_getxattr,
1118 .listxattr = f2fs_listxattr, 1110 .listxattr = f2fs_listxattr,
1119 .removexattr = generic_removexattr,
1120#endif 1111#endif
1121}; 1112};
1122 1113
@@ -1126,9 +1117,6 @@ const struct inode_operations f2fs_special_inode_operations = {
1126 .get_acl = f2fs_get_acl, 1117 .get_acl = f2fs_get_acl,
1127 .set_acl = f2fs_set_acl, 1118 .set_acl = f2fs_set_acl,
1128#ifdef CONFIG_F2FS_FS_XATTR 1119#ifdef CONFIG_F2FS_FS_XATTR
1129 .setxattr = generic_setxattr,
1130 .getxattr = generic_getxattr,
1131 .listxattr = f2fs_listxattr, 1120 .listxattr = f2fs_listxattr,
1132 .removexattr = generic_removexattr,
1133#endif 1121#endif
1134}; 1122};
diff --git a/fs/fuse/dir.c b/fs/fuse/dir.c
index 7490db141dd9..dbf77fe1dc2e 100644
--- a/fs/fuse/dir.c
+++ b/fs/fuse/dir.c
@@ -1739,10 +1739,7 @@ static const struct inode_operations fuse_dir_inode_operations = {
1739 .mknod = fuse_mknod, 1739 .mknod = fuse_mknod,
1740 .permission = fuse_permission, 1740 .permission = fuse_permission,
1741 .getattr = fuse_getattr, 1741 .getattr = fuse_getattr,
1742 .setxattr = generic_setxattr,
1743 .getxattr = generic_getxattr,
1744 .listxattr = fuse_listxattr, 1742 .listxattr = fuse_listxattr,
1745 .removexattr = generic_removexattr,
1746}; 1743};
1747 1744
1748static const struct file_operations fuse_dir_operations = { 1745static const struct file_operations fuse_dir_operations = {
@@ -1760,10 +1757,7 @@ static const struct inode_operations fuse_common_inode_operations = {
1760 .setattr = fuse_setattr, 1757 .setattr = fuse_setattr,
1761 .permission = fuse_permission, 1758 .permission = fuse_permission,
1762 .getattr = fuse_getattr, 1759 .getattr = fuse_getattr,
1763 .setxattr = generic_setxattr,
1764 .getxattr = generic_getxattr,
1765 .listxattr = fuse_listxattr, 1760 .listxattr = fuse_listxattr,
1766 .removexattr = generic_removexattr,
1767}; 1761};
1768 1762
1769static const struct inode_operations fuse_symlink_inode_operations = { 1763static const struct inode_operations fuse_symlink_inode_operations = {
@@ -1771,10 +1765,7 @@ static const struct inode_operations fuse_symlink_inode_operations = {
1771 .get_link = fuse_get_link, 1765 .get_link = fuse_get_link,
1772 .readlink = generic_readlink, 1766 .readlink = generic_readlink,
1773 .getattr = fuse_getattr, 1767 .getattr = fuse_getattr,
1774 .setxattr = generic_setxattr,
1775 .getxattr = generic_getxattr,
1776 .listxattr = fuse_listxattr, 1768 .listxattr = fuse_listxattr,
1777 .removexattr = generic_removexattr,
1778}; 1769};
1779 1770
1780void fuse_init_common(struct inode *inode) 1771void fuse_init_common(struct inode *inode)
diff --git a/fs/gfs2/inode.c b/fs/gfs2/inode.c
index e4da0ecd3285..9cbd4b6ebff1 100644
--- a/fs/gfs2/inode.c
+++ b/fs/gfs2/inode.c
@@ -2036,10 +2036,7 @@ const struct inode_operations gfs2_file_iops = {
2036 .permission = gfs2_permission, 2036 .permission = gfs2_permission,
2037 .setattr = gfs2_setattr, 2037 .setattr = gfs2_setattr,
2038 .getattr = gfs2_getattr, 2038 .getattr = gfs2_getattr,
2039 .setxattr = generic_setxattr,
2040 .getxattr = generic_getxattr,
2041 .listxattr = gfs2_listxattr, 2039 .listxattr = gfs2_listxattr,
2042 .removexattr = generic_removexattr,
2043 .fiemap = gfs2_fiemap, 2040 .fiemap = gfs2_fiemap,
2044 .get_acl = gfs2_get_acl, 2041 .get_acl = gfs2_get_acl,
2045 .set_acl = gfs2_set_acl, 2042 .set_acl = gfs2_set_acl,
@@ -2058,10 +2055,7 @@ const struct inode_operations gfs2_dir_iops = {
2058 .permission = gfs2_permission, 2055 .permission = gfs2_permission,
2059 .setattr = gfs2_setattr, 2056 .setattr = gfs2_setattr,
2060 .getattr = gfs2_getattr, 2057 .getattr = gfs2_getattr,
2061 .setxattr = generic_setxattr,
2062 .getxattr = generic_getxattr,
2063 .listxattr = gfs2_listxattr, 2058 .listxattr = gfs2_listxattr,
2064 .removexattr = generic_removexattr,
2065 .fiemap = gfs2_fiemap, 2059 .fiemap = gfs2_fiemap,
2066 .get_acl = gfs2_get_acl, 2060 .get_acl = gfs2_get_acl,
2067 .set_acl = gfs2_set_acl, 2061 .set_acl = gfs2_set_acl,
@@ -2074,10 +2068,7 @@ const struct inode_operations gfs2_symlink_iops = {
2074 .permission = gfs2_permission, 2068 .permission = gfs2_permission,
2075 .setattr = gfs2_setattr, 2069 .setattr = gfs2_setattr,
2076 .getattr = gfs2_getattr, 2070 .getattr = gfs2_getattr,
2077 .setxattr = generic_setxattr,
2078 .getxattr = generic_getxattr,
2079 .listxattr = gfs2_listxattr, 2071 .listxattr = gfs2_listxattr,
2080 .removexattr = generic_removexattr,
2081 .fiemap = gfs2_fiemap, 2072 .fiemap = gfs2_fiemap,
2082}; 2073};
2083 2074
diff --git a/fs/hfs/inode.c b/fs/hfs/inode.c
index 7f44f1a4e4c0..a181bd709b1e 100644
--- a/fs/hfs/inode.c
+++ b/fs/hfs/inode.c
@@ -688,7 +688,5 @@ static const struct file_operations hfs_file_operations = {
688static const struct inode_operations hfs_file_inode_operations = { 688static const struct inode_operations hfs_file_inode_operations = {
689 .lookup = hfs_file_lookup, 689 .lookup = hfs_file_lookup,
690 .setattr = hfs_inode_setattr, 690 .setattr = hfs_inode_setattr,
691 .setxattr = generic_setxattr,
692 .getxattr = generic_getxattr,
693 .listxattr = generic_listxattr, 691 .listxattr = generic_listxattr,
694}; 692};
diff --git a/fs/hfsplus/dir.c b/fs/hfsplus/dir.c
index 42e128661dc1..9cbe43075de5 100644
--- a/fs/hfsplus/dir.c
+++ b/fs/hfsplus/dir.c
@@ -562,10 +562,7 @@ const struct inode_operations hfsplus_dir_inode_operations = {
562 .symlink = hfsplus_symlink, 562 .symlink = hfsplus_symlink,
563 .mknod = hfsplus_mknod, 563 .mknod = hfsplus_mknod,
564 .rename = hfsplus_rename, 564 .rename = hfsplus_rename,
565 .setxattr = generic_setxattr,
566 .getxattr = generic_getxattr,
567 .listxattr = hfsplus_listxattr, 565 .listxattr = hfsplus_listxattr,
568 .removexattr = generic_removexattr,
569#ifdef CONFIG_HFSPLUS_FS_POSIX_ACL 566#ifdef CONFIG_HFSPLUS_FS_POSIX_ACL
570 .get_acl = hfsplus_get_posix_acl, 567 .get_acl = hfsplus_get_posix_acl,
571 .set_acl = hfsplus_set_posix_acl, 568 .set_acl = hfsplus_set_posix_acl,
diff --git a/fs/hfsplus/inode.c b/fs/hfsplus/inode.c
index 19462d773fe2..4a7c9241213d 100644
--- a/fs/hfsplus/inode.c
+++ b/fs/hfsplus/inode.c
@@ -333,10 +333,7 @@ int hfsplus_file_fsync(struct file *file, loff_t start, loff_t end,
333 333
334static const struct inode_operations hfsplus_file_inode_operations = { 334static const struct inode_operations hfsplus_file_inode_operations = {
335 .setattr = hfsplus_setattr, 335 .setattr = hfsplus_setattr,
336 .setxattr = generic_setxattr,
337 .getxattr = generic_getxattr,
338 .listxattr = hfsplus_listxattr, 336 .listxattr = hfsplus_listxattr,
339 .removexattr = generic_removexattr,
340#ifdef CONFIG_HFSPLUS_FS_POSIX_ACL 337#ifdef CONFIG_HFSPLUS_FS_POSIX_ACL
341 .get_acl = hfsplus_get_posix_acl, 338 .get_acl = hfsplus_get_posix_acl,
342 .set_acl = hfsplus_set_posix_acl, 339 .set_acl = hfsplus_set_posix_acl,
diff --git a/fs/jffs2/dir.c b/fs/jffs2/dir.c
index 8aa2f8936c3a..9b242434adf2 100644
--- a/fs/jffs2/dir.c
+++ b/fs/jffs2/dir.c
@@ -61,10 +61,7 @@ const struct inode_operations jffs2_dir_inode_operations =
61 .get_acl = jffs2_get_acl, 61 .get_acl = jffs2_get_acl,
62 .set_acl = jffs2_set_acl, 62 .set_acl = jffs2_set_acl,
63 .setattr = jffs2_setattr, 63 .setattr = jffs2_setattr,
64 .setxattr = generic_setxattr,
65 .getxattr = generic_getxattr,
66 .listxattr = jffs2_listxattr, 64 .listxattr = jffs2_listxattr,
67 .removexattr = generic_removexattr
68}; 65};
69 66
70/***********************************************************************/ 67/***********************************************************************/
diff --git a/fs/jffs2/file.c b/fs/jffs2/file.c
index fdf9e1cb2e48..c12476e309c6 100644
--- a/fs/jffs2/file.c
+++ b/fs/jffs2/file.c
@@ -66,10 +66,7 @@ const struct inode_operations jffs2_file_inode_operations =
66 .get_acl = jffs2_get_acl, 66 .get_acl = jffs2_get_acl,
67 .set_acl = jffs2_set_acl, 67 .set_acl = jffs2_set_acl,
68 .setattr = jffs2_setattr, 68 .setattr = jffs2_setattr,
69 .setxattr = generic_setxattr,
70 .getxattr = generic_getxattr,
71 .listxattr = jffs2_listxattr, 69 .listxattr = jffs2_listxattr,
72 .removexattr = generic_removexattr
73}; 70};
74 71
75const struct address_space_operations jffs2_file_address_operations = 72const struct address_space_operations jffs2_file_address_operations =
diff --git a/fs/jffs2/symlink.c b/fs/jffs2/symlink.c
index afe2d75ae395..8f3f0855fcd2 100644
--- a/fs/jffs2/symlink.c
+++ b/fs/jffs2/symlink.c
@@ -16,8 +16,5 @@ const struct inode_operations jffs2_symlink_inode_operations =
16 .readlink = generic_readlink, 16 .readlink = generic_readlink,
17 .get_link = simple_get_link, 17 .get_link = simple_get_link,
18 .setattr = jffs2_setattr, 18 .setattr = jffs2_setattr,
19 .setxattr = generic_setxattr,
20 .getxattr = generic_getxattr,
21 .listxattr = jffs2_listxattr, 19 .listxattr = jffs2_listxattr,
22 .removexattr = generic_removexattr
23}; 20};
diff --git a/fs/jfs/file.c b/fs/jfs/file.c
index 7f1a585a0a94..f6eb0417a909 100644
--- a/fs/jfs/file.c
+++ b/fs/jfs/file.c
@@ -140,10 +140,7 @@ int jfs_setattr(struct dentry *dentry, struct iattr *iattr)
140} 140}
141 141
142const struct inode_operations jfs_file_inode_operations = { 142const struct inode_operations jfs_file_inode_operations = {
143 .setxattr = generic_setxattr,
144 .getxattr = generic_getxattr,
145 .listxattr = jfs_listxattr, 143 .listxattr = jfs_listxattr,
146 .removexattr = generic_removexattr,
147 .setattr = jfs_setattr, 144 .setattr = jfs_setattr,
148#ifdef CONFIG_JFS_POSIX_ACL 145#ifdef CONFIG_JFS_POSIX_ACL
149 .get_acl = jfs_get_acl, 146 .get_acl = jfs_get_acl,
diff --git a/fs/jfs/namei.c b/fs/jfs/namei.c
index 814b0c58016c..e420c6088336 100644
--- a/fs/jfs/namei.c
+++ b/fs/jfs/namei.c
@@ -1537,10 +1537,7 @@ const struct inode_operations jfs_dir_inode_operations = {
1537 .rmdir = jfs_rmdir, 1537 .rmdir = jfs_rmdir,
1538 .mknod = jfs_mknod, 1538 .mknod = jfs_mknod,
1539 .rename = jfs_rename, 1539 .rename = jfs_rename,
1540 .setxattr = generic_setxattr,
1541 .getxattr = generic_getxattr,
1542 .listxattr = jfs_listxattr, 1540 .listxattr = jfs_listxattr,
1543 .removexattr = generic_removexattr,
1544 .setattr = jfs_setattr, 1541 .setattr = jfs_setattr,
1545#ifdef CONFIG_JFS_POSIX_ACL 1542#ifdef CONFIG_JFS_POSIX_ACL
1546 .get_acl = jfs_get_acl, 1543 .get_acl = jfs_get_acl,
diff --git a/fs/jfs/symlink.c b/fs/jfs/symlink.c
index c94c7e4a1323..c82404fee6cd 100644
--- a/fs/jfs/symlink.c
+++ b/fs/jfs/symlink.c
@@ -25,19 +25,13 @@ const struct inode_operations jfs_fast_symlink_inode_operations = {
25 .readlink = generic_readlink, 25 .readlink = generic_readlink,
26 .get_link = simple_get_link, 26 .get_link = simple_get_link,
27 .setattr = jfs_setattr, 27 .setattr = jfs_setattr,
28 .setxattr = generic_setxattr,
29 .getxattr = generic_getxattr,
30 .listxattr = jfs_listxattr, 28 .listxattr = jfs_listxattr,
31 .removexattr = generic_removexattr,
32}; 29};
33 30
34const struct inode_operations jfs_symlink_inode_operations = { 31const struct inode_operations jfs_symlink_inode_operations = {
35 .readlink = generic_readlink, 32 .readlink = generic_readlink,
36 .get_link = page_get_link, 33 .get_link = page_get_link,
37 .setattr = jfs_setattr, 34 .setattr = jfs_setattr,
38 .setxattr = generic_setxattr,
39 .getxattr = generic_getxattr,
40 .listxattr = jfs_listxattr, 35 .listxattr = jfs_listxattr,
41 .removexattr = generic_removexattr,
42}; 36};
43 37
diff --git a/fs/kernfs/dir.c b/fs/kernfs/dir.c
index a6e430adf67d..2b23ad91a464 100644
--- a/fs/kernfs/dir.c
+++ b/fs/kernfs/dir.c
@@ -1126,9 +1126,6 @@ const struct inode_operations kernfs_dir_iops = {
1126 .permission = kernfs_iop_permission, 1126 .permission = kernfs_iop_permission,
1127 .setattr = kernfs_iop_setattr, 1127 .setattr = kernfs_iop_setattr,
1128 .getattr = kernfs_iop_getattr, 1128 .getattr = kernfs_iop_getattr,
1129 .setxattr = generic_setxattr,
1130 .removexattr = generic_removexattr,
1131 .getxattr = generic_getxattr,
1132 .listxattr = kernfs_iop_listxattr, 1129 .listxattr = kernfs_iop_listxattr,
1133 1130
1134 .mkdir = kernfs_iop_mkdir, 1131 .mkdir = kernfs_iop_mkdir,
diff --git a/fs/kernfs/inode.c b/fs/kernfs/inode.c
index 6bc87547dede..2b735ce0268a 100644
--- a/fs/kernfs/inode.c
+++ b/fs/kernfs/inode.c
@@ -28,9 +28,6 @@ static const struct inode_operations kernfs_iops = {
28 .permission = kernfs_iop_permission, 28 .permission = kernfs_iop_permission,
29 .setattr = kernfs_iop_setattr, 29 .setattr = kernfs_iop_setattr,
30 .getattr = kernfs_iop_getattr, 30 .getattr = kernfs_iop_getattr,
31 .setxattr = generic_setxattr,
32 .removexattr = generic_removexattr,
33 .getxattr = generic_getxattr,
34 .listxattr = kernfs_iop_listxattr, 31 .listxattr = kernfs_iop_listxattr,
35}; 32};
36 33
diff --git a/fs/kernfs/symlink.c b/fs/kernfs/symlink.c
index 549a14c7c50a..9b43ca02b7ab 100644
--- a/fs/kernfs/symlink.c
+++ b/fs/kernfs/symlink.c
@@ -134,9 +134,6 @@ static const char *kernfs_iop_get_link(struct dentry *dentry,
134} 134}
135 135
136const struct inode_operations kernfs_symlink_iops = { 136const struct inode_operations kernfs_symlink_iops = {
137 .setxattr = generic_setxattr,
138 .removexattr = generic_removexattr,
139 .getxattr = generic_getxattr,
140 .listxattr = kernfs_iop_listxattr, 137 .listxattr = kernfs_iop_listxattr,
141 .readlink = generic_readlink, 138 .readlink = generic_readlink,
142 .get_link = kernfs_iop_get_link, 139 .get_link = kernfs_iop_get_link,
diff --git a/fs/nfs/nfs3proc.c b/fs/nfs/nfs3proc.c
index 698be9361280..dc925b531f32 100644
--- a/fs/nfs/nfs3proc.c
+++ b/fs/nfs/nfs3proc.c
@@ -899,9 +899,6 @@ static const struct inode_operations nfs3_dir_inode_operations = {
899 .setattr = nfs_setattr, 899 .setattr = nfs_setattr,
900#ifdef CONFIG_NFS_V3_ACL 900#ifdef CONFIG_NFS_V3_ACL
901 .listxattr = nfs3_listxattr, 901 .listxattr = nfs3_listxattr,
902 .getxattr = generic_getxattr,
903 .setxattr = generic_setxattr,
904 .removexattr = generic_removexattr,
905 .get_acl = nfs3_get_acl, 902 .get_acl = nfs3_get_acl,
906 .set_acl = nfs3_set_acl, 903 .set_acl = nfs3_set_acl,
907#endif 904#endif
@@ -913,9 +910,6 @@ static const struct inode_operations nfs3_file_inode_operations = {
913 .setattr = nfs_setattr, 910 .setattr = nfs_setattr,
914#ifdef CONFIG_NFS_V3_ACL 911#ifdef CONFIG_NFS_V3_ACL
915 .listxattr = nfs3_listxattr, 912 .listxattr = nfs3_listxattr,
916 .getxattr = generic_getxattr,
917 .setxattr = generic_setxattr,
918 .removexattr = generic_removexattr,
919 .get_acl = nfs3_get_acl, 913 .get_acl = nfs3_get_acl,
920 .set_acl = nfs3_set_acl, 914 .set_acl = nfs3_set_acl,
921#endif 915#endif
diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
index a9dec32ba9ba..0e327528a3ce 100644
--- a/fs/nfs/nfs4proc.c
+++ b/fs/nfs/nfs4proc.c
@@ -8941,20 +8941,14 @@ static const struct inode_operations nfs4_dir_inode_operations = {
8941 .permission = nfs_permission, 8941 .permission = nfs_permission,
8942 .getattr = nfs_getattr, 8942 .getattr = nfs_getattr,
8943 .setattr = nfs_setattr, 8943 .setattr = nfs_setattr,
8944 .getxattr = generic_getxattr,
8945 .setxattr = generic_setxattr,
8946 .listxattr = nfs4_listxattr, 8944 .listxattr = nfs4_listxattr,
8947 .removexattr = generic_removexattr,
8948}; 8945};
8949 8946
8950static const struct inode_operations nfs4_file_inode_operations = { 8947static const struct inode_operations nfs4_file_inode_operations = {
8951 .permission = nfs_permission, 8948 .permission = nfs_permission,
8952 .getattr = nfs_getattr, 8949 .getattr = nfs_getattr,
8953 .setattr = nfs_setattr, 8950 .setattr = nfs_setattr,
8954 .getxattr = generic_getxattr,
8955 .setxattr = generic_setxattr,
8956 .listxattr = nfs4_listxattr, 8951 .listxattr = nfs4_listxattr,
8957 .removexattr = generic_removexattr,
8958}; 8952};
8959 8953
8960const struct nfs_rpc_ops nfs_v4_clientops = { 8954const struct nfs_rpc_ops nfs_v4_clientops = {
diff --git a/fs/ocfs2/file.c b/fs/ocfs2/file.c
index 0b055bfb8e86..63316db763da 100644
--- a/fs/ocfs2/file.c
+++ b/fs/ocfs2/file.c
@@ -2474,10 +2474,7 @@ const struct inode_operations ocfs2_file_iops = {
2474 .setattr = ocfs2_setattr, 2474 .setattr = ocfs2_setattr,
2475 .getattr = ocfs2_getattr, 2475 .getattr = ocfs2_getattr,
2476 .permission = ocfs2_permission, 2476 .permission = ocfs2_permission,
2477 .setxattr = generic_setxattr,
2478 .getxattr = generic_getxattr,
2479 .listxattr = ocfs2_listxattr, 2477 .listxattr = ocfs2_listxattr,
2480 .removexattr = generic_removexattr,
2481 .fiemap = ocfs2_fiemap, 2478 .fiemap = ocfs2_fiemap,
2482 .get_acl = ocfs2_iop_get_acl, 2479 .get_acl = ocfs2_iop_get_acl,
2483 .set_acl = ocfs2_iop_set_acl, 2480 .set_acl = ocfs2_iop_set_acl,
diff --git a/fs/ocfs2/namei.c b/fs/ocfs2/namei.c
index a8f1225e6d9b..6cc043ebb9fa 100644
--- a/fs/ocfs2/namei.c
+++ b/fs/ocfs2/namei.c
@@ -2913,10 +2913,7 @@ const struct inode_operations ocfs2_dir_iops = {
2913 .setattr = ocfs2_setattr, 2913 .setattr = ocfs2_setattr,
2914 .getattr = ocfs2_getattr, 2914 .getattr = ocfs2_getattr,
2915 .permission = ocfs2_permission, 2915 .permission = ocfs2_permission,
2916 .setxattr = generic_setxattr,
2917 .getxattr = generic_getxattr,
2918 .listxattr = ocfs2_listxattr, 2916 .listxattr = ocfs2_listxattr,
2919 .removexattr = generic_removexattr,
2920 .fiemap = ocfs2_fiemap, 2917 .fiemap = ocfs2_fiemap,
2921 .get_acl = ocfs2_iop_get_acl, 2918 .get_acl = ocfs2_iop_get_acl,
2922 .set_acl = ocfs2_iop_set_acl, 2919 .set_acl = ocfs2_iop_set_acl,
diff --git a/fs/ocfs2/symlink.c b/fs/ocfs2/symlink.c
index 6c2a3e3c521c..6ad8eecefe21 100644
--- a/fs/ocfs2/symlink.c
+++ b/fs/ocfs2/symlink.c
@@ -91,9 +91,6 @@ const struct inode_operations ocfs2_symlink_inode_operations = {
91 .get_link = page_get_link, 91 .get_link = page_get_link,
92 .getattr = ocfs2_getattr, 92 .getattr = ocfs2_getattr,
93 .setattr = ocfs2_setattr, 93 .setattr = ocfs2_setattr,
94 .setxattr = generic_setxattr,
95 .getxattr = generic_getxattr,
96 .listxattr = ocfs2_listxattr, 94 .listxattr = ocfs2_listxattr,
97 .removexattr = generic_removexattr,
98 .fiemap = ocfs2_fiemap, 95 .fiemap = ocfs2_fiemap,
99}; 96};
diff --git a/fs/orangefs/inode.c b/fs/orangefs/inode.c
index 28a0557a69be..a9407eeecb21 100644
--- a/fs/orangefs/inode.c
+++ b/fs/orangefs/inode.c
@@ -296,10 +296,7 @@ const struct inode_operations orangefs_file_inode_operations = {
296 .set_acl = orangefs_set_acl, 296 .set_acl = orangefs_set_acl,
297 .setattr = orangefs_setattr, 297 .setattr = orangefs_setattr,
298 .getattr = orangefs_getattr, 298 .getattr = orangefs_getattr,
299 .setxattr = generic_setxattr,
300 .getxattr = generic_getxattr,
301 .listxattr = orangefs_listxattr, 299 .listxattr = orangefs_listxattr,
302 .removexattr = generic_removexattr,
303 .permission = orangefs_permission, 300 .permission = orangefs_permission,
304}; 301};
305 302
diff --git a/fs/orangefs/namei.c b/fs/orangefs/namei.c
index 62c525936ee8..ccca5186d5cd 100644
--- a/fs/orangefs/namei.c
+++ b/fs/orangefs/namei.c
@@ -462,9 +462,6 @@ const struct inode_operations orangefs_dir_inode_operations = {
462 .rename = orangefs_rename, 462 .rename = orangefs_rename,
463 .setattr = orangefs_setattr, 463 .setattr = orangefs_setattr,
464 .getattr = orangefs_getattr, 464 .getattr = orangefs_getattr,
465 .setxattr = generic_setxattr,
466 .getxattr = generic_getxattr,
467 .removexattr = generic_removexattr,
468 .listxattr = orangefs_listxattr, 465 .listxattr = orangefs_listxattr,
469 .permission = orangefs_permission, 466 .permission = orangefs_permission,
470}; 467};
diff --git a/fs/orangefs/symlink.c b/fs/orangefs/symlink.c
index 8fecf823f5ba..10b0b06e075e 100644
--- a/fs/orangefs/symlink.c
+++ b/fs/orangefs/symlink.c
@@ -14,6 +14,5 @@ const struct inode_operations orangefs_symlink_inode_operations = {
14 .setattr = orangefs_setattr, 14 .setattr = orangefs_setattr,
15 .getattr = orangefs_getattr, 15 .getattr = orangefs_getattr,
16 .listxattr = orangefs_listxattr, 16 .listxattr = orangefs_listxattr,
17 .setxattr = generic_setxattr,
18 .permission = orangefs_permission, 17 .permission = orangefs_permission,
19}; 18};
diff --git a/fs/overlayfs/dir.c b/fs/overlayfs/dir.c
index 1560fdc09a5f..463a18477a10 100644
--- a/fs/overlayfs/dir.c
+++ b/fs/overlayfs/dir.c
@@ -1003,10 +1003,7 @@ const struct inode_operations ovl_dir_inode_operations = {
1003 .mknod = ovl_mknod, 1003 .mknod = ovl_mknod,
1004 .permission = ovl_permission, 1004 .permission = ovl_permission,
1005 .getattr = ovl_dir_getattr, 1005 .getattr = ovl_dir_getattr,
1006 .setxattr = generic_setxattr,
1007 .getxattr = generic_getxattr,
1008 .listxattr = ovl_listxattr, 1006 .listxattr = ovl_listxattr,
1009 .removexattr = generic_removexattr,
1010 .get_acl = ovl_get_acl, 1007 .get_acl = ovl_get_acl,
1011 .update_time = ovl_update_time, 1008 .update_time = ovl_update_time,
1012}; 1009};
diff --git a/fs/overlayfs/inode.c b/fs/overlayfs/inode.c
index c75625c1efa3..b4c35594d9d8 100644
--- a/fs/overlayfs/inode.c
+++ b/fs/overlayfs/inode.c
@@ -367,10 +367,7 @@ static const struct inode_operations ovl_file_inode_operations = {
367 .setattr = ovl_setattr, 367 .setattr = ovl_setattr,
368 .permission = ovl_permission, 368 .permission = ovl_permission,
369 .getattr = ovl_getattr, 369 .getattr = ovl_getattr,
370 .setxattr = generic_setxattr,
371 .getxattr = generic_getxattr,
372 .listxattr = ovl_listxattr, 370 .listxattr = ovl_listxattr,
373 .removexattr = generic_removexattr,
374 .get_acl = ovl_get_acl, 371 .get_acl = ovl_get_acl,
375 .update_time = ovl_update_time, 372 .update_time = ovl_update_time,
376}; 373};
@@ -380,10 +377,7 @@ static const struct inode_operations ovl_symlink_inode_operations = {
380 .get_link = ovl_get_link, 377 .get_link = ovl_get_link,
381 .readlink = ovl_readlink, 378 .readlink = ovl_readlink,
382 .getattr = ovl_getattr, 379 .getattr = ovl_getattr,
383 .setxattr = generic_setxattr,
384 .getxattr = generic_getxattr,
385 .listxattr = ovl_listxattr, 380 .listxattr = ovl_listxattr,
386 .removexattr = generic_removexattr,
387 .update_time = ovl_update_time, 381 .update_time = ovl_update_time,
388}; 382};
389 383
diff --git a/fs/reiserfs/file.c b/fs/reiserfs/file.c
index 90f815bdfa8a..2f8c5c9bdaf6 100644
--- a/fs/reiserfs/file.c
+++ b/fs/reiserfs/file.c
@@ -260,10 +260,7 @@ const struct file_operations reiserfs_file_operations = {
260 260
261const struct inode_operations reiserfs_file_inode_operations = { 261const struct inode_operations reiserfs_file_inode_operations = {
262 .setattr = reiserfs_setattr, 262 .setattr = reiserfs_setattr,
263 .setxattr = generic_setxattr,
264 .getxattr = generic_getxattr,
265 .listxattr = reiserfs_listxattr, 263 .listxattr = reiserfs_listxattr,
266 .removexattr = generic_removexattr,
267 .permission = reiserfs_permission, 264 .permission = reiserfs_permission,
268 .get_acl = reiserfs_get_acl, 265 .get_acl = reiserfs_get_acl,
269 .set_acl = reiserfs_set_acl, 266 .set_acl = reiserfs_set_acl,
diff --git a/fs/reiserfs/namei.c b/fs/reiserfs/namei.c
index 8a36696d6df9..fd7d0606aa96 100644
--- a/fs/reiserfs/namei.c
+++ b/fs/reiserfs/namei.c
@@ -1650,10 +1650,7 @@ const struct inode_operations reiserfs_dir_inode_operations = {
1650 .mknod = reiserfs_mknod, 1650 .mknod = reiserfs_mknod,
1651 .rename = reiserfs_rename, 1651 .rename = reiserfs_rename,
1652 .setattr = reiserfs_setattr, 1652 .setattr = reiserfs_setattr,
1653 .setxattr = generic_setxattr,
1654 .getxattr = generic_getxattr,
1655 .listxattr = reiserfs_listxattr, 1653 .listxattr = reiserfs_listxattr,
1656 .removexattr = generic_removexattr,
1657 .permission = reiserfs_permission, 1654 .permission = reiserfs_permission,
1658 .get_acl = reiserfs_get_acl, 1655 .get_acl = reiserfs_get_acl,
1659 .set_acl = reiserfs_set_acl, 1656 .set_acl = reiserfs_set_acl,
@@ -1667,10 +1664,7 @@ const struct inode_operations reiserfs_symlink_inode_operations = {
1667 .readlink = generic_readlink, 1664 .readlink = generic_readlink,
1668 .get_link = page_get_link, 1665 .get_link = page_get_link,
1669 .setattr = reiserfs_setattr, 1666 .setattr = reiserfs_setattr,
1670 .setxattr = generic_setxattr,
1671 .getxattr = generic_getxattr,
1672 .listxattr = reiserfs_listxattr, 1667 .listxattr = reiserfs_listxattr,
1673 .removexattr = generic_removexattr,
1674 .permission = reiserfs_permission, 1668 .permission = reiserfs_permission,
1675}; 1669};
1676 1670
@@ -1679,10 +1673,7 @@ const struct inode_operations reiserfs_symlink_inode_operations = {
1679 */ 1673 */
1680const struct inode_operations reiserfs_special_inode_operations = { 1674const struct inode_operations reiserfs_special_inode_operations = {
1681 .setattr = reiserfs_setattr, 1675 .setattr = reiserfs_setattr,
1682 .setxattr = generic_setxattr,
1683 .getxattr = generic_getxattr,
1684 .listxattr = reiserfs_listxattr, 1676 .listxattr = reiserfs_listxattr,
1685 .removexattr = generic_removexattr,
1686 .permission = reiserfs_permission, 1677 .permission = reiserfs_permission,
1687 .get_acl = reiserfs_get_acl, 1678 .get_acl = reiserfs_get_acl,
1688 .set_acl = reiserfs_set_acl, 1679 .set_acl = reiserfs_set_acl,
diff --git a/fs/squashfs/inode.c b/fs/squashfs/inode.c
index 0927b1e80ab6..e9793b1e49a5 100644
--- a/fs/squashfs/inode.c
+++ b/fs/squashfs/inode.c
@@ -425,7 +425,6 @@ failed_read:
425 425
426 426
427const struct inode_operations squashfs_inode_ops = { 427const struct inode_operations squashfs_inode_ops = {
428 .getxattr = generic_getxattr,
429 .listxattr = squashfs_listxattr 428 .listxattr = squashfs_listxattr
430}; 429};
431 430
diff --git a/fs/squashfs/namei.c b/fs/squashfs/namei.c
index 67cad77fefb4..40c10d9974c9 100644
--- a/fs/squashfs/namei.c
+++ b/fs/squashfs/namei.c
@@ -247,6 +247,5 @@ failed:
247 247
248const struct inode_operations squashfs_dir_inode_ops = { 248const struct inode_operations squashfs_dir_inode_ops = {
249 .lookup = squashfs_lookup, 249 .lookup = squashfs_lookup,
250 .getxattr = generic_getxattr,
251 .listxattr = squashfs_listxattr 250 .listxattr = squashfs_listxattr
252}; 251};
diff --git a/fs/squashfs/symlink.c b/fs/squashfs/symlink.c
index d688ef42a6a1..79b9c31a0c8f 100644
--- a/fs/squashfs/symlink.c
+++ b/fs/squashfs/symlink.c
@@ -120,7 +120,6 @@ const struct address_space_operations squashfs_symlink_aops = {
120const struct inode_operations squashfs_symlink_inode_ops = { 120const struct inode_operations squashfs_symlink_inode_ops = {
121 .readlink = generic_readlink, 121 .readlink = generic_readlink,
122 .get_link = page_get_link, 122 .get_link = page_get_link,
123 .getxattr = generic_getxattr,
124 .listxattr = squashfs_listxattr 123 .listxattr = squashfs_listxattr
125}; 124};
126 125
diff --git a/fs/squashfs/xattr.h b/fs/squashfs/xattr.h
index c83f5d9ec125..afe70f815e3d 100644
--- a/fs/squashfs/xattr.h
+++ b/fs/squashfs/xattr.h
@@ -42,6 +42,5 @@ static inline int squashfs_xattr_lookup(struct super_block *sb,
42 return 0; 42 return 0;
43} 43}
44#define squashfs_listxattr NULL 44#define squashfs_listxattr NULL
45#define generic_getxattr NULL
46#define squashfs_xattr_handlers NULL 45#define squashfs_xattr_handlers NULL
47#endif 46#endif
diff --git a/fs/ubifs/dir.c b/fs/ubifs/dir.c
index 4b86d3a738e1..1d55aeaebf23 100644
--- a/fs/ubifs/dir.c
+++ b/fs/ubifs/dir.c
@@ -1182,10 +1182,7 @@ const struct inode_operations ubifs_dir_inode_operations = {
1182 .rename = ubifs_rename, 1182 .rename = ubifs_rename,
1183 .setattr = ubifs_setattr, 1183 .setattr = ubifs_setattr,
1184 .getattr = ubifs_getattr, 1184 .getattr = ubifs_getattr,
1185 .setxattr = generic_setxattr,
1186 .getxattr = generic_getxattr,
1187 .listxattr = ubifs_listxattr, 1185 .listxattr = ubifs_listxattr,
1188 .removexattr = generic_removexattr,
1189#ifdef CONFIG_UBIFS_ATIME_SUPPORT 1186#ifdef CONFIG_UBIFS_ATIME_SUPPORT
1190 .update_time = ubifs_update_time, 1187 .update_time = ubifs_update_time,
1191#endif 1188#endif
diff --git a/fs/ubifs/file.c b/fs/ubifs/file.c
index 7bbf420d1289..4360c6625e77 100644
--- a/fs/ubifs/file.c
+++ b/fs/ubifs/file.c
@@ -1621,10 +1621,7 @@ const struct address_space_operations ubifs_file_address_operations = {
1621const struct inode_operations ubifs_file_inode_operations = { 1621const struct inode_operations ubifs_file_inode_operations = {
1622 .setattr = ubifs_setattr, 1622 .setattr = ubifs_setattr,
1623 .getattr = ubifs_getattr, 1623 .getattr = ubifs_getattr,
1624 .setxattr = generic_setxattr,
1625 .getxattr = generic_getxattr,
1626 .listxattr = ubifs_listxattr, 1624 .listxattr = ubifs_listxattr,
1627 .removexattr = generic_removexattr,
1628#ifdef CONFIG_UBIFS_ATIME_SUPPORT 1625#ifdef CONFIG_UBIFS_ATIME_SUPPORT
1629 .update_time = ubifs_update_time, 1626 .update_time = ubifs_update_time,
1630#endif 1627#endif
@@ -1635,10 +1632,7 @@ const struct inode_operations ubifs_symlink_inode_operations = {
1635 .get_link = simple_get_link, 1632 .get_link = simple_get_link,
1636 .setattr = ubifs_setattr, 1633 .setattr = ubifs_setattr,
1637 .getattr = ubifs_getattr, 1634 .getattr = ubifs_getattr,
1638 .setxattr = generic_setxattr,
1639 .getxattr = generic_getxattr,
1640 .listxattr = ubifs_listxattr, 1635 .listxattr = ubifs_listxattr,
1641 .removexattr = generic_removexattr,
1642#ifdef CONFIG_UBIFS_ATIME_SUPPORT 1636#ifdef CONFIG_UBIFS_ATIME_SUPPORT
1643 .update_time = ubifs_update_time, 1637 .update_time = ubifs_update_time,
1644#endif 1638#endif
diff --git a/fs/xattr.c b/fs/xattr.c
index 2432442656a2..3368659c471e 100644
--- a/fs/xattr.c
+++ b/fs/xattr.c
@@ -741,22 +741,6 @@ SYSCALL_DEFINE2(fremovexattr, int, fd, const char __user *, name)
741} 741}
742 742
743/* 743/*
744 * Find the handler for the prefix and dispatch its get() operation.
745 */
746ssize_t
747generic_getxattr(struct dentry *dentry, struct inode *inode,
748 const char *name, void *buffer, size_t size)
749{
750 const struct xattr_handler *handler;
751
752 handler = xattr_resolve_name(inode, &name);
753 if (IS_ERR(handler))
754 return PTR_ERR(handler);
755 return handler->get(handler, dentry, inode,
756 name, buffer, size);
757}
758
759/*
760 * Combine the results of the list() operation from every xattr_handler in the 744 * Combine the results of the list() operation from every xattr_handler in the
761 * list. 745 * list.
762 */ 746 */
@@ -792,44 +776,7 @@ generic_listxattr(struct dentry *dentry, char *buffer, size_t buffer_size)
792 } 776 }
793 return size; 777 return size;
794} 778}
795
796/*
797 * Find the handler for the prefix and dispatch its set() operation.
798 */
799int
800generic_setxattr(struct dentry *dentry, struct inode *inode, const char *name,
801 const void *value, size_t size, int flags)
802{
803 const struct xattr_handler *handler;
804
805 if (size == 0)
806 value = ""; /* empty EA, do not remove */
807 handler = xattr_resolve_name(inode, &name);
808 if (IS_ERR(handler))
809 return PTR_ERR(handler);
810 return handler->set(handler, dentry, inode, name, value, size, flags);
811}
812
813/*
814 * Find the handler for the prefix and dispatch its set() operation to remove
815 * any associated extended attribute.
816 */
817int
818generic_removexattr(struct dentry *dentry, const char *name)
819{
820 const struct xattr_handler *handler;
821
822 handler = xattr_resolve_name(d_inode(dentry), &name);
823 if (IS_ERR(handler))
824 return PTR_ERR(handler);
825 return handler->set(handler, dentry, d_inode(dentry), name, NULL,
826 0, XATTR_REPLACE);
827}
828
829EXPORT_SYMBOL(generic_getxattr);
830EXPORT_SYMBOL(generic_listxattr); 779EXPORT_SYMBOL(generic_listxattr);
831EXPORT_SYMBOL(generic_setxattr);
832EXPORT_SYMBOL(generic_removexattr);
833 780
834/** 781/**
835 * xattr_full_name - Compute full attribute name from suffix 782 * xattr_full_name - Compute full attribute name from suffix
diff --git a/fs/xfs/xfs_iops.c b/fs/xfs/xfs_iops.c
index b24c3102fa93..37eeb37319f0 100644
--- a/fs/xfs/xfs_iops.c
+++ b/fs/xfs/xfs_iops.c
@@ -1036,9 +1036,6 @@ static const struct inode_operations xfs_inode_operations = {
1036 .set_acl = xfs_set_acl, 1036 .set_acl = xfs_set_acl,
1037 .getattr = xfs_vn_getattr, 1037 .getattr = xfs_vn_getattr,
1038 .setattr = xfs_vn_setattr, 1038 .setattr = xfs_vn_setattr,
1039 .setxattr = generic_setxattr,
1040 .getxattr = generic_getxattr,
1041 .removexattr = generic_removexattr,
1042 .listxattr = xfs_vn_listxattr, 1039 .listxattr = xfs_vn_listxattr,
1043 .fiemap = xfs_vn_fiemap, 1040 .fiemap = xfs_vn_fiemap,
1044 .update_time = xfs_vn_update_time, 1041 .update_time = xfs_vn_update_time,
@@ -1064,9 +1061,6 @@ static const struct inode_operations xfs_dir_inode_operations = {
1064 .set_acl = xfs_set_acl, 1061 .set_acl = xfs_set_acl,
1065 .getattr = xfs_vn_getattr, 1062 .getattr = xfs_vn_getattr,
1066 .setattr = xfs_vn_setattr, 1063 .setattr = xfs_vn_setattr,
1067 .setxattr = generic_setxattr,
1068 .getxattr = generic_getxattr,
1069 .removexattr = generic_removexattr,
1070 .listxattr = xfs_vn_listxattr, 1064 .listxattr = xfs_vn_listxattr,
1071 .update_time = xfs_vn_update_time, 1065 .update_time = xfs_vn_update_time,
1072 .tmpfile = xfs_vn_tmpfile, 1066 .tmpfile = xfs_vn_tmpfile,
@@ -1092,9 +1086,6 @@ static const struct inode_operations xfs_dir_ci_inode_operations = {
1092 .set_acl = xfs_set_acl, 1086 .set_acl = xfs_set_acl,
1093 .getattr = xfs_vn_getattr, 1087 .getattr = xfs_vn_getattr,
1094 .setattr = xfs_vn_setattr, 1088 .setattr = xfs_vn_setattr,
1095 .setxattr = generic_setxattr,
1096 .getxattr = generic_getxattr,
1097 .removexattr = generic_removexattr,
1098 .listxattr = xfs_vn_listxattr, 1089 .listxattr = xfs_vn_listxattr,
1099 .update_time = xfs_vn_update_time, 1090 .update_time = xfs_vn_update_time,
1100 .tmpfile = xfs_vn_tmpfile, 1091 .tmpfile = xfs_vn_tmpfile,
@@ -1105,9 +1096,6 @@ static const struct inode_operations xfs_symlink_inode_operations = {
1105 .get_link = xfs_vn_get_link, 1096 .get_link = xfs_vn_get_link,
1106 .getattr = xfs_vn_getattr, 1097 .getattr = xfs_vn_getattr,
1107 .setattr = xfs_vn_setattr, 1098 .setattr = xfs_vn_setattr,
1108 .setxattr = generic_setxattr,
1109 .getxattr = generic_getxattr,
1110 .removexattr = generic_removexattr,
1111 .listxattr = xfs_vn_listxattr, 1099 .listxattr = xfs_vn_listxattr,
1112 .update_time = xfs_vn_update_time, 1100 .update_time = xfs_vn_update_time,
1113}; 1101};
@@ -1117,9 +1105,6 @@ static const struct inode_operations xfs_inline_symlink_inode_operations = {
1117 .get_link = xfs_vn_get_link_inline, 1105 .get_link = xfs_vn_get_link_inline,
1118 .getattr = xfs_vn_getattr, 1106 .getattr = xfs_vn_getattr,
1119 .setattr = xfs_vn_setattr, 1107 .setattr = xfs_vn_setattr,
1120 .setxattr = generic_setxattr,
1121 .getxattr = generic_getxattr,
1122 .removexattr = generic_removexattr,
1123 .listxattr = xfs_vn_listxattr, 1108 .listxattr = xfs_vn_listxattr,
1124 .update_time = xfs_vn_update_time, 1109 .update_time = xfs_vn_update_time,
1125}; 1110};
diff --git a/include/linux/fs.h b/include/linux/fs.h
index 91a7245e58c7..788261b74d45 100644
--- a/include/linux/fs.h
+++ b/include/linux/fs.h
@@ -1739,12 +1739,7 @@ struct inode_operations {
1739 struct inode *, struct dentry *, unsigned int); 1739 struct inode *, struct dentry *, unsigned int);
1740 int (*setattr) (struct dentry *, struct iattr *); 1740 int (*setattr) (struct dentry *, struct iattr *);
1741 int (*getattr) (struct vfsmount *mnt, struct dentry *, struct kstat *); 1741 int (*getattr) (struct vfsmount *mnt, struct dentry *, struct kstat *);
1742 int (*setxattr) (struct dentry *, struct inode *,
1743 const char *, const void *, size_t, int);
1744 ssize_t (*getxattr) (struct dentry *, struct inode *,
1745 const char *, void *, size_t);
1746 ssize_t (*listxattr) (struct dentry *, char *, size_t); 1742 ssize_t (*listxattr) (struct dentry *, char *, size_t);
1747 int (*removexattr) (struct dentry *, const char *);
1748 int (*fiemap)(struct inode *, struct fiemap_extent_info *, u64 start, 1743 int (*fiemap)(struct inode *, struct fiemap_extent_info *, u64 start,
1749 u64 len); 1744 u64 len);
1750 int (*update_time)(struct inode *, struct timespec *, int); 1745 int (*update_time)(struct inode *, struct timespec *, int);
diff --git a/include/linux/xattr.h b/include/linux/xattr.h
index 6ae6b2e68efb..e77605a0c8da 100644
--- a/include/linux/xattr.h
+++ b/include/linux/xattr.h
@@ -55,11 +55,7 @@ int vfs_setxattr(struct dentry *, const char *, const void *, size_t, int);
55int __vfs_removexattr(struct dentry *, const char *); 55int __vfs_removexattr(struct dentry *, const char *);
56int vfs_removexattr(struct dentry *, const char *); 56int vfs_removexattr(struct dentry *, const char *);
57 57
58ssize_t generic_getxattr(struct dentry *dentry, struct inode *inode, const char *name, void *buffer, size_t size);
59ssize_t generic_listxattr(struct dentry *dentry, char *buffer, size_t buffer_size); 58ssize_t generic_listxattr(struct dentry *dentry, char *buffer, size_t buffer_size);
60int generic_setxattr(struct dentry *dentry, struct inode *inode,
61 const char *name, const void *value, size_t size, int flags);
62int generic_removexattr(struct dentry *dentry, const char *name);
63ssize_t vfs_getxattr_alloc(struct dentry *dentry, const char *name, 59ssize_t vfs_getxattr_alloc(struct dentry *dentry, const char *name,
64 char **xattr_value, size_t size, gfp_t flags); 60 char **xattr_value, size_t size, gfp_t flags);
65 61
diff --git a/mm/shmem.c b/mm/shmem.c
index 971fc83e6402..6505c8b99f31 100644
--- a/mm/shmem.c
+++ b/mm/shmem.c
@@ -3288,10 +3288,7 @@ static const struct inode_operations shmem_short_symlink_operations = {
3288 .readlink = generic_readlink, 3288 .readlink = generic_readlink,
3289 .get_link = simple_get_link, 3289 .get_link = simple_get_link,
3290#ifdef CONFIG_TMPFS_XATTR 3290#ifdef CONFIG_TMPFS_XATTR
3291 .setxattr = generic_setxattr,
3292 .getxattr = generic_getxattr,
3293 .listxattr = shmem_listxattr, 3291 .listxattr = shmem_listxattr,
3294 .removexattr = generic_removexattr,
3295#endif 3292#endif
3296}; 3293};
3297 3294
@@ -3299,10 +3296,7 @@ static const struct inode_operations shmem_symlink_inode_operations = {
3299 .readlink = generic_readlink, 3296 .readlink = generic_readlink,
3300 .get_link = shmem_get_link, 3297 .get_link = shmem_get_link,
3301#ifdef CONFIG_TMPFS_XATTR 3298#ifdef CONFIG_TMPFS_XATTR
3302 .setxattr = generic_setxattr,
3303 .getxattr = generic_getxattr,
3304 .listxattr = shmem_listxattr, 3299 .listxattr = shmem_listxattr,
3305 .removexattr = generic_removexattr,
3306#endif 3300#endif
3307}; 3301};
3308 3302
@@ -3796,10 +3790,7 @@ static const struct inode_operations shmem_inode_operations = {
3796 .getattr = shmem_getattr, 3790 .getattr = shmem_getattr,
3797 .setattr = shmem_setattr, 3791 .setattr = shmem_setattr,
3798#ifdef CONFIG_TMPFS_XATTR 3792#ifdef CONFIG_TMPFS_XATTR
3799 .setxattr = generic_setxattr,
3800 .getxattr = generic_getxattr,
3801 .listxattr = shmem_listxattr, 3793 .listxattr = shmem_listxattr,
3802 .removexattr = generic_removexattr,
3803 .set_acl = simple_set_acl, 3794 .set_acl = simple_set_acl,
3804#endif 3795#endif
3805}; 3796};
@@ -3818,10 +3809,7 @@ static const struct inode_operations shmem_dir_inode_operations = {
3818 .tmpfile = shmem_tmpfile, 3809 .tmpfile = shmem_tmpfile,
3819#endif 3810#endif
3820#ifdef CONFIG_TMPFS_XATTR 3811#ifdef CONFIG_TMPFS_XATTR
3821 .setxattr = generic_setxattr,
3822 .getxattr = generic_getxattr,
3823 .listxattr = shmem_listxattr, 3812 .listxattr = shmem_listxattr,
3824 .removexattr = generic_removexattr,
3825#endif 3813#endif
3826#ifdef CONFIG_TMPFS_POSIX_ACL 3814#ifdef CONFIG_TMPFS_POSIX_ACL
3827 .setattr = shmem_setattr, 3815 .setattr = shmem_setattr,
@@ -3831,10 +3819,7 @@ static const struct inode_operations shmem_dir_inode_operations = {
3831 3819
3832static const struct inode_operations shmem_special_inode_operations = { 3820static const struct inode_operations shmem_special_inode_operations = {
3833#ifdef CONFIG_TMPFS_XATTR 3821#ifdef CONFIG_TMPFS_XATTR
3834 .setxattr = generic_setxattr,
3835 .getxattr = generic_getxattr,
3836 .listxattr = shmem_listxattr, 3822 .listxattr = shmem_listxattr,
3837 .removexattr = generic_removexattr,
3838#endif 3823#endif
3839#ifdef CONFIG_TMPFS_POSIX_ACL 3824#ifdef CONFIG_TMPFS_POSIX_ACL
3840 .setattr = shmem_setattr, 3825 .setattr = shmem_setattr,
diff --git a/net/socket.c b/net/socket.c
index 976f7324887b..5a9bf5ee2464 100644
--- a/net/socket.c
+++ b/net/socket.c
@@ -519,7 +519,6 @@ static ssize_t sockfs_listxattr(struct dentry *dentry, char *buffer,
519} 519}
520 520
521static const struct inode_operations sockfs_inode_ops = { 521static const struct inode_operations sockfs_inode_ops = {
522 .getxattr = generic_getxattr,
523 .listxattr = sockfs_listxattr, 522 .listxattr = sockfs_listxattr,
524}; 523};
525 524