Re: linux-next: build warning after merge of the mm tree

Andrew Morton
2022-07-18T22:54:17Z

On Mon, 18 Jul 2022 20:28:15 +1000 Stephen Rothwell <sfr@canb.auug.org.au> wrote:

> After merging the mm tree, today's linux-next build (powerpc
> ppc44x_defconfig) produced this warning:
>
> mm/shmem.c:2848:12: warning: 'shmem_fileattr_set' defined but not used [-Wunused-function]
> 2848 | static int shmem_fileattr_set(struct user_namespace *mnt_userns,
> | ^~~~~~~~~~~~~~~~~~
> mm/shmem.c:2839:12: warning: 'shmem_fileattr_get' defined but not used [-Wunused-function]
> 2839 | static int shmem_fileattr_get(struct dentry *dentry, struct fileattr *fa)
> | ^~~~~~~~~~~~~~~~~~
>
> Introduced by commit
>
> 8673852551f0 ("mm/shmem: support FS_IOC_[SG]ETFLAGS in tmpfs")

Thanks, I moved the definitions inside the appropriate ifdef.

--- a/mm/shmem.c~mm-shmem-support-fs_ioc_etflags-in-tmpfs-fix
+++ a/mm/shmem.c
@@ -2837,39 +2837,6 @@ out:
return error;
}

-static int shmem_fileattr_get(struct dentry *dentry, struct fileattr *fa)
-{
- struct shmem_inode_info *info = SHMEM_I(d_inode(dentry));
-
- fileattr_fill_flags(fa, info->fsflags & SHMEM_FL_USER_VISIBLE);
-
- return 0;
-}
-
-static int shmem_fileattr_set(struct user_namespace *mnt_userns,
- struct dentry *dentry, struct fileattr *fa)
-{
- struct inode *inode = d_inode(dentry);
- struct shmem_inode_info *info = SHMEM_I(inode);
-
- if (fileattr_has_fsx(fa))
- return -EOPNOTSUPP;
-
- info->fsflags = (info->fsflags & ~SHMEM_FL_USER_MODIFIABLE) |
- (fa->flags & SHMEM_FL_USER_MODIFIABLE);
-
- inode->i_flags &= ~(S_APPEND | S_IMMUTABLE | S_NOATIME);
- if (info->fsflags & FS_APPEND_FL)
- inode->i_flags |= S_APPEND;
- if (info->fsflags & FS_IMMUTABLE_FL)
- inode->i_flags |= S_IMMUTABLE;
- if (info->fsflags & FS_NOATIME_FL)
- inode->i_flags |= S_NOATIME;
-
- inode->i_ctime = current_time(inode);
- return 0;
-}
-
static int shmem_statfs(struct dentry *dentry, struct kstatfs *buf)
{
struct shmem_sb_info *sbinfo = SHMEM_SB(dentry->d_sb);
@@ -3195,6 +3162,40 @@ static const char *shmem_get_link(struct
}

#ifdef CONFIG_TMPFS_XATTR
+
+static int shmem_fileattr_get(struct dentry *dentry, struct fileattr *fa)
+{
+ struct shmem_inode_info *info = SHMEM_I(d_inode(dentry));
+
+ fileattr_fill_flags(fa, info->fsflags & SHMEM_FL_USER_VISIBLE);
+
+ return 0;
+}
+
+static int shmem_fileattr_set(struct user_namespace *mnt_userns,
+ struct dentry *dentry, struct fileattr *fa)
+{
+ struct inode *inode = d_inode(dentry);
+ struct shmem_inode_info *info = SHMEM_I(inode);
+
+ if (fileattr_has_fsx(fa))
+ return -EOPNOTSUPP;
+
+ info->fsflags = (info->fsflags & ~SHMEM_FL_USER_MODIFIABLE) |
+ (fa->flags & SHMEM_FL_USER_MODIFIABLE);
+
+ inode->i_flags &= ~(S_APPEND | S_IMMUTABLE | S_NOATIME);
+ if (info->fsflags & FS_APPEND_FL)
+ inode->i_flags |= S_APPEND;
+ if (info->fsflags & FS_IMMUTABLE_FL)
+ inode->i_flags |= S_IMMUTABLE;
+ if (info->fsflags & FS_NOATIME_FL)
+ inode->i_flags |= S_NOATIME;
+
+ inode->i_ctime = current_time(inode);
+ return 0;
+}
+
/*
* Superblocks without xattr inode operations may get some security.* xattr
* support from the LSM "for free". As soon as we have any other xattrs
_