The entries in xattr handler table should be immutable (ie const) like other operation tables. Later patches convert common filesystems. Uncoverted filesystems will still work, but will generate a compiler warning. Signed-off-by: Stephen Hemminger <shemminger@xxxxxxxxxx> --- fs/generic_acl.c | 4 ++-- fs/xattr.c | 14 +++++++------- include/linux/fs.h | 2 +- include/linux/generic_acl.h | 4 ++-- include/linux/xattr.h | 2 +- mm/shmem.c | 4 ++-- 6 files changed, 15 insertions(+), 15 deletions(-) --- a/include/linux/xattr.h 2010-05-13 16:34:05.403477486 -0700 +++ b/include/linux/xattr.h 2010-05-13 16:34:14.452532499 -0700 @@ -37,7 +37,7 @@ struct inode; struct dentry; struct xattr_handler { - char *prefix; + const char *prefix; int flags; /* fs private flags passed back to the handlers */ size_t (*list)(struct dentry *dentry, char *list, size_t list_size, const char *name, size_t name_len, int handler_flags); --- a/include/linux/fs.h 2010-05-13 16:44:51.284126558 -0700 +++ b/include/linux/fs.h 2010-05-13 16:45:08.952534280 -0700 @@ -1339,7 +1339,7 @@ struct super_block { #ifdef CONFIG_SECURITY void *s_security; #endif - struct xattr_handler **s_xattr; + const struct xattr_handler **s_xattr; struct list_head s_inodes; /* all inodes */ struct hlist_head s_anon; /* anonymous dentries for (nfs) exporting */ --- a/fs/generic_acl.c 2010-05-13 16:54:53.934439088 -0700 +++ b/fs/generic_acl.c 2010-05-13 16:55:13.842844638 -0700 @@ -201,7 +201,7 @@ generic_check_acl(struct inode *inode, i return -EAGAIN; } -struct xattr_handler generic_acl_access_handler = { +const struct xattr_handler generic_acl_access_handler = { .prefix = POSIX_ACL_XATTR_ACCESS, .flags = ACL_TYPE_ACCESS, .list = generic_acl_list, @@ -209,7 +209,7 @@ struct xattr_handler generic_acl_access_ .set = generic_acl_set, }; -struct xattr_handler generic_acl_default_handler = { +const struct xattr_handler generic_acl_default_handler = { .prefix = POSIX_ACL_XATTR_DEFAULT, .flags = ACL_TYPE_DEFAULT, .list = generic_acl_list, --- a/include/linux/generic_acl.h 2010-05-13 16:55:34.073187417 -0700 +++ b/include/linux/generic_acl.h 2010-05-13 16:55:41.652531852 -0700 @@ -5,8 +5,8 @@ struct inode; -extern struct xattr_handler generic_acl_access_handler; -extern struct xattr_handler generic_acl_default_handler; +extern const struct xattr_handler generic_acl_access_handler; +extern const struct xattr_handler generic_acl_default_handler; int generic_acl_init(struct inode *, struct inode *); int generic_acl_chmod(struct inode *); --- a/mm/shmem.c 2010-05-13 16:56:02.543789782 -0700 +++ b/mm/shmem.c 2010-05-13 16:56:23.162842856 -0700 @@ -2071,14 +2071,14 @@ static int shmem_xattr_security_set(stru size, flags); } -static struct xattr_handler shmem_xattr_security_handler = { +static const struct xattr_handler shmem_xattr_security_handler = { .prefix = XATTR_SECURITY_PREFIX, .list = shmem_xattr_security_list, .get = shmem_xattr_security_get, .set = shmem_xattr_security_set, }; -static struct xattr_handler *shmem_xattr_handlers[] = { +static const struct xattr_handler *shmem_xattr_handlers[] = { &generic_acl_access_handler, &generic_acl_default_handler, &shmem_xattr_security_handler, --- a/fs/xattr.c 2010-05-13 17:05:50.124699014 -0700 +++ b/fs/xattr.c 2010-05-13 17:09:58.074182182 -0700 @@ -590,10 +590,10 @@ strcmp_prefix(const char *a, const char /* * Find the xattr_handler with the matching prefix. */ -static struct xattr_handler * -xattr_resolve_name(struct xattr_handler **handlers, const char **name) +static const struct xattr_handler * +xattr_resolve_name(const struct xattr_handler **handlers, const char **name) { - struct xattr_handler *handler; + const struct xattr_handler *handler; if (!*name) return NULL; @@ -614,7 +614,7 @@ xattr_resolve_name(struct xattr_handler ssize_t generic_getxattr(struct dentry *dentry, const char *name, void *buffer, size_t size) { - struct xattr_handler *handler; + const struct xattr_handler *handler; handler = xattr_resolve_name(dentry->d_sb->s_xattr, &name); if (!handler) @@ -629,7 +629,7 @@ generic_getxattr(struct dentry *dentry, ssize_t generic_listxattr(struct dentry *dentry, char *buffer, size_t buffer_size) { - struct xattr_handler *handler, **handlers = dentry->d_sb->s_xattr; + const struct xattr_handler *handler, **handlers = dentry->d_sb->s_xattr; unsigned int size = 0; if (!buffer) { @@ -659,7 +659,7 @@ generic_listxattr(struct dentry *dentry, int generic_setxattr(struct dentry *dentry, const char *name, const void *value, size_t size, int flags) { - struct xattr_handler *handler; + const struct xattr_handler *handler; if (size == 0) value = ""; /* empty EA, do not remove */ @@ -676,7 +676,7 @@ generic_setxattr(struct dentry *dentry, int generic_removexattr(struct dentry *dentry, const char *name) { - struct xattr_handler *handler; + const struct xattr_handler *handler; handler = xattr_resolve_name(dentry->d_sb->s_xattr, &name); if (!handler) -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html