[PATCH 3/4] erofs: unexport erofs_getxattr()
Hongbo Li
lihongbo22 at huawei.com
Tue Dec 30 13:46:45 AEDT 2025
On 2025/12/29 17:29, Gao Xiang wrote:
> No external users other than those in xattr.c.
>
> Signed-off-by: Gao Xiang <hsiangkao at linux.alibaba.com>
Reviewed-by: Hongbo Li <lihongbo22 at huawei.com>
Thanks,
Hongbo
> ---
> fs/erofs/xattr.c | 108 +++++++++++++++++++++++------------------------
> fs/erofs/xattr.h | 7 ---
> 2 files changed, 54 insertions(+), 61 deletions(-)
>
> diff --git a/fs/erofs/xattr.c b/fs/erofs/xattr.c
> index 396536d9a862..972941ecb71c 100644
> --- a/fs/erofs/xattr.c
> +++ b/fs/erofs/xattr.c
> @@ -125,58 +125,6 @@ static int erofs_init_inode_xattrs(struct inode *inode)
> return ret;
> }
>
> -static bool erofs_xattr_user_list(struct dentry *dentry)
> -{
> - return test_opt(&EROFS_SB(dentry->d_sb)->opt, XATTR_USER);
> -}
> -
> -static bool erofs_xattr_trusted_list(struct dentry *dentry)
> -{
> - return capable(CAP_SYS_ADMIN);
> -}
> -
> -static int erofs_xattr_generic_get(const struct xattr_handler *handler,
> - struct dentry *unused, struct inode *inode,
> - const char *name, void *buffer, size_t size)
> -{
> - if (handler->flags == EROFS_XATTR_INDEX_USER &&
> - !test_opt(&EROFS_I_SB(inode)->opt, XATTR_USER))
> - return -EOPNOTSUPP;
> -
> - return erofs_getxattr(inode, handler->flags, name, buffer, size);
> -}
> -
> -const struct xattr_handler erofs_xattr_user_handler = {
> - .prefix = XATTR_USER_PREFIX,
> - .flags = EROFS_XATTR_INDEX_USER,
> - .list = erofs_xattr_user_list,
> - .get = erofs_xattr_generic_get,
> -};
> -
> -const struct xattr_handler erofs_xattr_trusted_handler = {
> - .prefix = XATTR_TRUSTED_PREFIX,
> - .flags = EROFS_XATTR_INDEX_TRUSTED,
> - .list = erofs_xattr_trusted_list,
> - .get = erofs_xattr_generic_get,
> -};
> -
> -#ifdef CONFIG_EROFS_FS_SECURITY
> -const struct xattr_handler __maybe_unused erofs_xattr_security_handler = {
> - .prefix = XATTR_SECURITY_PREFIX,
> - .flags = EROFS_XATTR_INDEX_SECURITY,
> - .get = erofs_xattr_generic_get,
> -};
> -#endif
> -
> -const struct xattr_handler * const erofs_xattr_handlers[] = {
> - &erofs_xattr_user_handler,
> - &erofs_xattr_trusted_handler,
> -#ifdef CONFIG_EROFS_FS_SECURITY
> - &erofs_xattr_security_handler,
> -#endif
> - NULL,
> -};
> -
> static int erofs_xattr_copy_to_buffer(struct erofs_xattr_iter *it,
> unsigned int len)
> {
> @@ -391,8 +339,8 @@ static int erofs_xattr_iter_shared(struct erofs_xattr_iter *it,
> return i ? ret : -ENODATA;
> }
>
> -int erofs_getxattr(struct inode *inode, int index, const char *name,
> - void *buffer, size_t buffer_size)
> +static int erofs_getxattr(struct inode *inode, int index, const char *name,
> + void *buffer, size_t buffer_size)
> {
> int ret;
> unsigned int hashbit;
> @@ -462,6 +410,58 @@ ssize_t erofs_listxattr(struct dentry *dentry, char *buffer, size_t buffer_size)
> return ret ? ret : it.buffer_ofs;
> }
>
> +static bool erofs_xattr_user_list(struct dentry *dentry)
> +{
> + return test_opt(&EROFS_SB(dentry->d_sb)->opt, XATTR_USER);
> +}
> +
> +static bool erofs_xattr_trusted_list(struct dentry *dentry)
> +{
> + return capable(CAP_SYS_ADMIN);
> +}
> +
> +static int erofs_xattr_generic_get(const struct xattr_handler *handler,
> + struct dentry *unused, struct inode *inode,
> + const char *name, void *buffer, size_t size)
> +{
> + if (handler->flags == EROFS_XATTR_INDEX_USER &&
> + !test_opt(&EROFS_I_SB(inode)->opt, XATTR_USER))
> + return -EOPNOTSUPP;
> +
> + return erofs_getxattr(inode, handler->flags, name, buffer, size);
> +}
> +
> +const struct xattr_handler erofs_xattr_user_handler = {
> + .prefix = XATTR_USER_PREFIX,
> + .flags = EROFS_XATTR_INDEX_USER,
> + .list = erofs_xattr_user_list,
> + .get = erofs_xattr_generic_get,
> +};
> +
> +const struct xattr_handler erofs_xattr_trusted_handler = {
> + .prefix = XATTR_TRUSTED_PREFIX,
> + .flags = EROFS_XATTR_INDEX_TRUSTED,
> + .list = erofs_xattr_trusted_list,
> + .get = erofs_xattr_generic_get,
> +};
> +
> +#ifdef CONFIG_EROFS_FS_SECURITY
> +const struct xattr_handler __maybe_unused erofs_xattr_security_handler = {
> + .prefix = XATTR_SECURITY_PREFIX,
> + .flags = EROFS_XATTR_INDEX_SECURITY,
> + .get = erofs_xattr_generic_get,
> +};
> +#endif
> +
> +const struct xattr_handler * const erofs_xattr_handlers[] = {
> + &erofs_xattr_user_handler,
> + &erofs_xattr_trusted_handler,
> +#ifdef CONFIG_EROFS_FS_SECURITY
> + &erofs_xattr_security_handler,
> +#endif
> + NULL,
> +};
> +
> void erofs_xattr_prefixes_cleanup(struct super_block *sb)
> {
> struct erofs_sb_info *sbi = EROFS_SB(sb);
> diff --git a/fs/erofs/xattr.h b/fs/erofs/xattr.h
> index 6317caa8413e..ee1d8c310d97 100644
> --- a/fs/erofs/xattr.h
> +++ b/fs/erofs/xattr.h
> @@ -45,17 +45,10 @@ extern const struct xattr_handler * const erofs_xattr_handlers[];
>
> int erofs_xattr_prefixes_init(struct super_block *sb);
> void erofs_xattr_prefixes_cleanup(struct super_block *sb);
> -int erofs_getxattr(struct inode *, int, const char *, void *, size_t);
> ssize_t erofs_listxattr(struct dentry *, char *, size_t);
> #else
> static inline int erofs_xattr_prefixes_init(struct super_block *sb) { return 0; }
> static inline void erofs_xattr_prefixes_cleanup(struct super_block *sb) {}
> -static inline int erofs_getxattr(struct inode *inode, int index,
> - const char *name, void *buffer,
> - size_t buffer_size)
> -{
> - return -EOPNOTSUPP;
> -}
>
> #define erofs_listxattr (NULL)
> #define erofs_xattr_handlers (NULL)
More information about the Linux-erofs
mailing list