From: kernel test robot <lkp@intel.com>
To: oe-kbuild@lists.linux.dev
Cc: lkp@intel.com, Dan Carpenter <error27@gmail.com>
Subject: [vfs-idmapping:b4/fs-tucked-mounts 5/6] fs/namespace.c:2437 lock_mount_mountpoint() warn: inconsistent returns '&dentry->d_inode->i_rwsem'.
Date: Sat, 18 Mar 2023 18:35:18 +0800 [thread overview]
Message-ID: <202303181854.8isL7q7h-lkp@intel.com> (raw)
BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
CC: Seth Forshee <sforshee@kernel.org>
TO: Christian Brauner <brauner@kernel.org>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/vfs/idmapping.git b4/fs-tucked-mounts
head: 9574d94575cd22b2ce0f138170083abce70f762e
commit: 2effb170ab9bcaf85b2babc8905a0e5f598a0b99 [5/6] fs: allow to tuck mounts explicitly
:::::: branch date: 12 hours ago
:::::: commit date: 12 hours ago
config: i386-randconfig-m021 (https://download.01.org/0day-ci/archive/20230318/202303181854.8isL7q7h-lkp@intel.com/config)
compiler: gcc-11 (Debian 11.3.0-8) 11.3.0
If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <lkp@intel.com>
| Reported-by: Dan Carpenter <error27@gmail.com>
| Link: https://lore.kernel.org/r/202303181854.8isL7q7h-lkp@intel.com/
New smatch warnings:
fs/namespace.c:2437 lock_mount_mountpoint() warn: inconsistent returns '&dentry->d_inode->i_rwsem'.
Old smatch warnings:
fs/namespace.c:3311 finish_automount() warn: inconsistent returns '&dentry->d_inode->i_rwsem'.
fs/namespace.c:4261 mount_setattr_prepare() error: uninitialized symbol 'err'.
vim +2437 fs/namespace.c
b90fa9ae8f51f0 Ram Pai 2005-11-07 2381
2effb170ab9bca Christian Brauner 2023-02-27 2382 /**
2effb170ab9bca Christian Brauner 2023-02-27 2383 * lock_mount_mountpoint - lock mount and mountpoint
2effb170ab9bca Christian Brauner 2023-02-27 2384 * @path: target path
2effb170ab9bca Christian Brauner 2023-02-27 2385 * @tuck: whether we intend to tuck a mount beneath @path
2effb170ab9bca Christian Brauner 2023-02-27 2386 *
2effb170ab9bca Christian Brauner 2023-02-27 2387 * Follow the mount stack on @path until the top mount is found.
2effb170ab9bca Christian Brauner 2023-02-27 2388 *
2effb170ab9bca Christian Brauner 2023-02-27 2389 * If we intend to mount on top of @path->mnt acquire the inode_lock()
2effb170ab9bca Christian Brauner 2023-02-27 2390 * for the top mount's ->mnt_root to protect against concurrent removal
2effb170ab9bca Christian Brauner 2023-02-27 2391 * of our prospective mountpoint from another mount namespace.
2effb170ab9bca Christian Brauner 2023-02-27 2392 *
2effb170ab9bca Christian Brauner 2023-02-27 2393 * If we intend to tuck beneath the top mount @m acquire the
2effb170ab9bca Christian Brauner 2023-02-27 2394 * inode_lock() on @m's mountpoint @mp on @m->mnt_parent. Otherwise we
2effb170ab9bca Christian Brauner 2023-02-27 2395 * risk racing with someone who unlinked @mp from another mount
2effb170ab9bca Christian Brauner 2023-02-27 2396 * namespace where @m doesn't have a child mount mounted @mp. We don't
2effb170ab9bca Christian Brauner 2023-02-27 2397 * care if @m->mnt_root/@path->dentry is removed (as long as
2effb170ab9bca Christian Brauner 2023-02-27 2398 * @path->dentry isn't equal to @m->mnt_mountpoint of course).
2effb170ab9bca Christian Brauner 2023-02-27 2399 *
2effb170ab9bca Christian Brauner 2023-02-27 2400 * Return: Either the target mountpoint on the top mount or the top
2effb170ab9bca Christian Brauner 2023-02-27 2401 * mount's mountpoint.
2effb170ab9bca Christian Brauner 2023-02-27 2402 */
2effb170ab9bca Christian Brauner 2023-02-27 2403 static struct mountpoint *lock_mount_mountpoint(struct path *path, bool tuck)
b12cea9198fa99 Al Viro 2011-03-18 2404 {
b62db2954cb1e6 Christian Brauner 2023-02-27 2405 struct vfsmount *mnt = path->mnt;
b62db2954cb1e6 Christian Brauner 2023-02-27 2406 struct dentry *dentry;
b62db2954cb1e6 Christian Brauner 2023-02-27 2407 struct mountpoint *mp;
b62db2954cb1e6 Christian Brauner 2023-02-27 2408
b62db2954cb1e6 Christian Brauner 2023-02-27 2409 for (;;) {
2effb170ab9bca Christian Brauner 2023-02-27 2410 dentry = tuck ? real_mount(mnt)->mnt_mountpoint : path->dentry;
5955102c9984fa Al Viro 2016-01-22 2411 inode_lock(dentry->d_inode);
84d17192d2afd5 Al Viro 2013-03-15 2412 if (unlikely(cant_mount(dentry))) {
5955102c9984fa Al Viro 2016-01-22 2413 inode_unlock(dentry->d_inode);
84d17192d2afd5 Al Viro 2013-03-15 2414 return ERR_PTR(-ENOENT);
b12cea9198fa99 Al Viro 2011-03-18 2415 }
b62db2954cb1e6 Christian Brauner 2023-02-27 2416
97216be09efd41 Al Viro 2013-03-16 2417 namespace_lock();
b62db2954cb1e6 Christian Brauner 2023-02-27 2418
b12cea9198fa99 Al Viro 2011-03-18 2419 mnt = lookup_mnt(path);
b62db2954cb1e6 Christian Brauner 2023-02-27 2420 if (likely(!mnt))
b62db2954cb1e6 Christian Brauner 2023-02-27 2421 break;
b62db2954cb1e6 Christian Brauner 2023-02-27 2422
b62db2954cb1e6 Christian Brauner 2023-02-27 2423 namespace_unlock();
b62db2954cb1e6 Christian Brauner 2023-02-27 2424 inode_unlock(dentry->d_inode);
b62db2954cb1e6 Christian Brauner 2023-02-27 2425 path_put(path);
b62db2954cb1e6 Christian Brauner 2023-02-27 2426 path->mnt = mnt;
b62db2954cb1e6 Christian Brauner 2023-02-27 2427 path->dentry = dget(mnt->mnt_root);
b62db2954cb1e6 Christian Brauner 2023-02-27 2428 }
b62db2954cb1e6 Christian Brauner 2023-02-27 2429
b62db2954cb1e6 Christian Brauner 2023-02-27 2430 mp = get_mountpoint(dentry);
84d17192d2afd5 Al Viro 2013-03-15 2431 if (IS_ERR(mp)) {
97216be09efd41 Al Viro 2013-03-16 2432 namespace_unlock();
5955102c9984fa Al Viro 2016-01-22 2433 inode_unlock(dentry->d_inode);
84d17192d2afd5 Al Viro 2013-03-15 2434 return mp;
84d17192d2afd5 Al Viro 2013-03-15 2435 }
b62db2954cb1e6 Christian Brauner 2023-02-27 2436
84d17192d2afd5 Al Viro 2013-03-15 @2437 return mp;
84d17192d2afd5 Al Viro 2013-03-15 2438 }
b12cea9198fa99 Al Viro 2011-03-18 2439
:::::: The code at line 2437 was first introduced by commit
:::::: 84d17192d2afd52aeba88c71ae4959a015f56a38 get rid of full-hash scan on detaching vfsmounts
:::::: TO: Al Viro <viro@zeniv.linux.org.uk>
:::::: CC: Al Viro <viro@zeniv.linux.org.uk>
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests
reply other threads:[~2023-03-18 10:35 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=202303181854.8isL7q7h-lkp@intel.com \
--to=lkp@intel.com \
--cc=error27@gmail.com \
--cc=oe-kbuild@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.