public inbox for llvm@lists.linux.dev
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: Christian Brauner <brauner@kernel.org>
Cc: llvm@lists.linux.dev, oe-kbuild-all@lists.linux.dev,
	Christian Brauner <christianvanbrauner@gmail.com>
Subject: [brauner-vfs:vfs.mount 14/14] fs/namespace.c:4969:1: warning: stack frame size (1048) exceeds limit (1024) in '__se_sys_statmount'
Date: Mon, 20 Nov 2023 11:26:50 +0800	[thread overview]
Message-ID: <202311201110.549Sj1SK-lkp@intel.com> (raw)

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/vfs/vfs.git vfs.mount
head:   bbaba842df6d93fa0fbcf8bc8341a352f6189c6c
commit: bbaba842df6d93fa0fbcf8bc8341a352f6189c6c [14/14] statmount: simplify string option retrieval
config: arm-randconfig-001-20231120 (https://download.01.org/0day-ci/archive/20231120/202311201110.549Sj1SK-lkp@intel.com/config)
compiler: clang version 17.0.0 (https://github.com/llvm/llvm-project.git 4a5ac14ee968ff0ad5d2cc1ffa0299048db4c88a)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20231120/202311201110.549Sj1SK-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202311201110.549Sj1SK-lkp@intel.com/

All warnings (new ones prefixed by >>):

   fs/namespace.c:4896:6: warning: variable 'ret' is used uninitialized whenever 'if' condition is false [-Wsometimes-uninitialized]
    4896 |         if (sm->mask & STMT_FS_TYPE) {
         |             ^~~~~~~~~~~~~~~~~~~~~~~
   fs/namespace.c:4902:7: note: uninitialized use occurs here
    4902 |         if (!ret && sm->mask & STMT_MNT_ROOT) {
         |              ^~~
   fs/namespace.c:4896:2: note: remove the 'if' if its condition is always true
    4896 |         if (sm->mask & STMT_FS_TYPE) {
         |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   fs/namespace.c:4894:9: note: initialize the variable 'ret' to silence this warning
    4894 |         int ret;
         |                ^
         |                 = 0
>> fs/namespace.c:4969:1: warning: stack frame size (1048) exceeds limit (1024) in '__se_sys_statmount' [-Wframe-larger-than]
    4969 | SYSCALL_DEFINE4(statmount, const struct mnt_id_req __user *, req,
         | ^
   include/linux/syscalls.h:224:36: note: expanded from macro 'SYSCALL_DEFINE4'
     224 | #define SYSCALL_DEFINE4(name, ...) SYSCALL_DEFINEx(4, _##name, __VA_ARGS__)
         |                                    ^
   include/linux/syscalls.h:232:2: note: expanded from macro 'SYSCALL_DEFINEx'
     232 |         __SYSCALL_DEFINEx(x, sname, __VA_ARGS__)
         |         ^
   include/linux/syscalls.h:251:18: note: expanded from macro '__SYSCALL_DEFINEx'
     251 |         asmlinkage long __se_sys##name(__MAP(x,__SC_LONG,__VA_ARGS__))  \
         |                         ^
   <scratch space>:154:1: note: expanded from here
     154 | __se_sys_statmount
         | ^
   2 warnings generated.


vim +/__se_sys_statmount +4969 fs/namespace.c

bbaba842df6d93 Christian Brauner 2023-11-19  4888  
bbaba842df6d93 Christian Brauner 2023-11-19  4889  static int copy_statmount_to_user(struct kstatmount *s)
bbaba842df6d93 Christian Brauner 2023-11-19  4890  {
bbaba842df6d93 Christian Brauner 2023-11-19  4891  	struct statmount *sm = &s->sm;
bbaba842df6d93 Christian Brauner 2023-11-19  4892  	struct seq_file *seq;
bb0f527b929c6a Miklos Szeredi    2023-10-25  4893  	size_t copysize = min_t(size_t, s->bufsize, sizeof(*sm));
bbaba842df6d93 Christian Brauner 2023-11-19  4894  	int ret;
bbaba842df6d93 Christian Brauner 2023-11-19  4895  
bbaba842df6d93 Christian Brauner 2023-11-19 @4896  	if (sm->mask & STMT_FS_TYPE) {
bbaba842df6d93 Christian Brauner 2023-11-19  4897  		seq = &s->fs_type;
bbaba842df6d93 Christian Brauner 2023-11-19  4898  		ret = copy_to_user(s->buf->str + sm->fs_type,
bbaba842df6d93 Christian Brauner 2023-11-19  4899  				   seq->buf, seq->count);
bbaba842df6d93 Christian Brauner 2023-11-19  4900  	}
bbaba842df6d93 Christian Brauner 2023-11-19  4901  
bbaba842df6d93 Christian Brauner 2023-11-19  4902  	if (!ret && sm->mask & STMT_MNT_ROOT) {
bbaba842df6d93 Christian Brauner 2023-11-19  4903  		seq = &s->mnt_root;
bbaba842df6d93 Christian Brauner 2023-11-19  4904  		ret = copy_to_user(s->buf->str + sm->mnt_root,
bbaba842df6d93 Christian Brauner 2023-11-19  4905  				   seq->buf, seq->count);
bbaba842df6d93 Christian Brauner 2023-11-19  4906  	}
bbaba842df6d93 Christian Brauner 2023-11-19  4907  
bbaba842df6d93 Christian Brauner 2023-11-19  4908  	if (!ret && sm->mask & STMT_MNT_POINT) {
bbaba842df6d93 Christian Brauner 2023-11-19  4909  		seq = &s->mnt_point;
bbaba842df6d93 Christian Brauner 2023-11-19  4910  		ret = copy_to_user(s->buf->str + sm->mnt_point,
bbaba842df6d93 Christian Brauner 2023-11-19  4911  				   seq->buf, seq->count);
bbaba842df6d93 Christian Brauner 2023-11-19  4912  	}
bbaba842df6d93 Christian Brauner 2023-11-19  4913  
bbaba842df6d93 Christian Brauner 2023-11-19  4914  	if (ret)
bbaba842df6d93 Christian Brauner 2023-11-19  4915  		return -EFAULT;
bbaba842df6d93 Christian Brauner 2023-11-19  4916  
bbaba842df6d93 Christian Brauner 2023-11-19  4917  	/* Return the number of bytes copied to the buffer */
bbaba842df6d93 Christian Brauner 2023-11-19  4918  	sm->size = copysize + s->pos;
bbaba842df6d93 Christian Brauner 2023-11-19  4919  	if (copy_to_user(s->buf, sm, copysize))
bbaba842df6d93 Christian Brauner 2023-11-19  4920  		return -EFAULT;
bbaba842df6d93 Christian Brauner 2023-11-19  4921  
bbaba842df6d93 Christian Brauner 2023-11-19  4922  	return 0;
bbaba842df6d93 Christian Brauner 2023-11-19  4923  }
bbaba842df6d93 Christian Brauner 2023-11-19  4924  
bbaba842df6d93 Christian Brauner 2023-11-19  4925  static int do_statmount(struct kstatmount *s)
bbaba842df6d93 Christian Brauner 2023-11-19  4926  {
bbaba842df6d93 Christian Brauner 2023-11-19  4927  	struct mount *m = real_mount(s->mnt);
bb0f527b929c6a Miklos Szeredi    2023-10-25  4928  	int err;
bb0f527b929c6a Miklos Szeredi    2023-10-25  4929  
bb0f527b929c6a Miklos Szeredi    2023-10-25  4930  	if (!capable(CAP_SYS_ADMIN) &&
bb0f527b929c6a Miklos Szeredi    2023-10-25  4931  	    !is_path_reachable(m, m->mnt.mnt_root, &s->root))
bb0f527b929c6a Miklos Szeredi    2023-10-25  4932  		return -EPERM;
bb0f527b929c6a Miklos Szeredi    2023-10-25  4933  
bb0f527b929c6a Miklos Szeredi    2023-10-25  4934  	err = security_sb_statfs(s->mnt->mnt_root);
bb0f527b929c6a Miklos Szeredi    2023-10-25  4935  	if (err)
bb0f527b929c6a Miklos Szeredi    2023-10-25  4936  		return err;
bb0f527b929c6a Miklos Szeredi    2023-10-25  4937  
e3da02da05b8cb Christian Brauner 2023-11-19  4938  	if (s->mask & STMT_SB_BASIC)
e3da02da05b8cb Christian Brauner 2023-11-19  4939  		stmt_sb_basic(s);
e3da02da05b8cb Christian Brauner 2023-11-19  4940  
e3da02da05b8cb Christian Brauner 2023-11-19  4941  	if (s->mask & STMT_MNT_BASIC)
e3da02da05b8cb Christian Brauner 2023-11-19  4942  		stmt_mnt_basic(s);
e3da02da05b8cb Christian Brauner 2023-11-19  4943  
e3da02da05b8cb Christian Brauner 2023-11-19  4944  	if (s->mask & STMT_PROPAGATE_FROM)
e3da02da05b8cb Christian Brauner 2023-11-19  4945  		stmt_propagate_from(s);
e3da02da05b8cb Christian Brauner 2023-11-19  4946  
bbaba842df6d93 Christian Brauner 2023-11-19  4947  	if (s->mask & STMT_FS_TYPE)
bbaba842df6d93 Christian Brauner 2023-11-19  4948  		err = stmt_string(s, STMT_FS_TYPE);
bb0f527b929c6a Miklos Szeredi    2023-10-25  4949  
bbaba842df6d93 Christian Brauner 2023-11-19  4950  	if (!err && s->mask & STMT_MNT_ROOT)
bbaba842df6d93 Christian Brauner 2023-11-19  4951  		err = stmt_string(s, STMT_MNT_ROOT);
bb0f527b929c6a Miklos Szeredi    2023-10-25  4952  
bbaba842df6d93 Christian Brauner 2023-11-19  4953  	if (!err && s->mask & STMT_MNT_POINT)
bbaba842df6d93 Christian Brauner 2023-11-19  4954  		err = stmt_string(s, STMT_MNT_POINT);
bb0f527b929c6a Miklos Szeredi    2023-10-25  4955  
bbaba842df6d93 Christian Brauner 2023-11-19  4956  	if (err)
bbaba842df6d93 Christian Brauner 2023-11-19  4957  		return err;
bb0f527b929c6a Miklos Szeredi    2023-10-25  4958  
bb0f527b929c6a Miklos Szeredi    2023-10-25  4959  	return 0;
bb0f527b929c6a Miklos Szeredi    2023-10-25  4960  }
bb0f527b929c6a Miklos Szeredi    2023-10-25  4961  
bbaba842df6d93 Christian Brauner 2023-11-19  4962  static inline void drop_kstatmount(struct kstatmount *ks)
bbaba842df6d93 Christian Brauner 2023-11-19  4963  {
bbaba842df6d93 Christian Brauner 2023-11-19  4964  	__putname(ks->fs_type.buf);
bbaba842df6d93 Christian Brauner 2023-11-19  4965  	__putname(ks->mnt_root.buf);
bbaba842df6d93 Christian Brauner 2023-11-19  4966  	__putname(ks->mnt_point.buf);
bbaba842df6d93 Christian Brauner 2023-11-19  4967  }
bbaba842df6d93 Christian Brauner 2023-11-19  4968  
bb0f527b929c6a Miklos Szeredi    2023-10-25 @4969  SYSCALL_DEFINE4(statmount, const struct mnt_id_req __user *, req,
bb0f527b929c6a Miklos Szeredi    2023-10-25  4970  		struct statmount __user *, buf, size_t, bufsize,
bb0f527b929c6a Miklos Szeredi    2023-10-25  4971  		unsigned int, flags)
bb0f527b929c6a Miklos Szeredi    2023-10-25  4972  {
bb0f527b929c6a Miklos Szeredi    2023-10-25  4973  	struct vfsmount *mnt;
bb0f527b929c6a Miklos Szeredi    2023-10-25  4974  	struct mnt_id_req kreq;
e9b3e0e86c7961 Christian Brauner 2023-11-19  4975  	struct kstatmount *ks;
bb0f527b929c6a Miklos Szeredi    2023-10-25  4976  	int ret;
bb0f527b929c6a Miklos Szeredi    2023-10-25  4977  
bb0f527b929c6a Miklos Szeredi    2023-10-25  4978  	if (flags)
bb0f527b929c6a Miklos Szeredi    2023-10-25  4979  		return -EINVAL;
bb0f527b929c6a Miklos Szeredi    2023-10-25  4980  
bb0f527b929c6a Miklos Szeredi    2023-10-25  4981  	if (copy_from_user(&kreq, req, sizeof(kreq)))
bb0f527b929c6a Miklos Szeredi    2023-10-25  4982  		return -EFAULT;
bb0f527b929c6a Miklos Szeredi    2023-10-25  4983  
bb0f527b929c6a Miklos Szeredi    2023-10-25  4984  	down_read(&namespace_sem);
bb0f527b929c6a Miklos Szeredi    2023-10-25  4985  	mnt = lookup_mnt_in_ns(kreq.mnt_id, current->nsproxy->mnt_ns);
e9b3e0e86c7961 Christian Brauner 2023-11-19  4986  	if (!mnt) {
e9b3e0e86c7961 Christian Brauner 2023-11-19  4987  		up_read(&namespace_sem);
e9b3e0e86c7961 Christian Brauner 2023-11-19  4988  		return -ENOENT;
e9b3e0e86c7961 Christian Brauner 2023-11-19  4989  	}
e9b3e0e86c7961 Christian Brauner 2023-11-19  4990  
e9b3e0e86c7961 Christian Brauner 2023-11-19  4991  	ks = &(struct kstatmount){
bb0f527b929c6a Miklos Szeredi    2023-10-25  4992  		.mask		= kreq.request_mask,
bb0f527b929c6a Miklos Szeredi    2023-10-25  4993  		.buf		= buf,
bb0f527b929c6a Miklos Szeredi    2023-10-25  4994  		.bufsize	= bufsize,
bb0f527b929c6a Miklos Szeredi    2023-10-25  4995  		.mnt		= mnt,
bb0f527b929c6a Miklos Szeredi    2023-10-25  4996  	};
bb0f527b929c6a Miklos Szeredi    2023-10-25  4997  
e9b3e0e86c7961 Christian Brauner 2023-11-19  4998  	get_fs_root(current->fs, &ks->root);
e9b3e0e86c7961 Christian Brauner 2023-11-19  4999  	ret = do_statmount(ks);
e9b3e0e86c7961 Christian Brauner 2023-11-19  5000  	path_put(&ks->root);
bb0f527b929c6a Miklos Szeredi    2023-10-25  5001  	up_read(&namespace_sem);
bb0f527b929c6a Miklos Szeredi    2023-10-25  5002  
bbaba842df6d93 Christian Brauner 2023-11-19  5003  	if (!ret)
bbaba842df6d93 Christian Brauner 2023-11-19  5004  		ret = copy_statmount_to_user(ks);
bbaba842df6d93 Christian Brauner 2023-11-19  5005  	drop_kstatmount(ks);
bb0f527b929c6a Miklos Szeredi    2023-10-25  5006  	return ret;
bb0f527b929c6a Miklos Szeredi    2023-10-25  5007  }
bb0f527b929c6a Miklos Szeredi    2023-10-25  5008  

:::::: The code at line 4969 was first introduced by commit
:::::: bb0f527b929c6ab105d80eaac03399bcee6b047e add statmount(2) syscall

:::::: TO: Miklos Szeredi <mszeredi@redhat.com>
:::::: CC: Christian Brauner <brauner@kernel.org>

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

                 reply	other threads:[~2023-11-20  3:29 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=202311201110.549Sj1SK-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=brauner@kernel.org \
    --cc=christianvanbrauner@gmail.com \
    --cc=llvm@lists.linux.dev \
    --cc=oe-kbuild-all@lists.linux.dev \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox