lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:   Wed, 16 Feb 2022 16:57:29 +0800
From:   "Chen, Rong A" <rong.a.chen@...el.com>
To:     Nathan Chancellor <nathan@...nel.org>,
        Imran Khan <imran.f.khan@...cle.com>,
        kernel test robot <lkp@...el.com>
Cc:     tj@...nel.org, gregkh@...uxfoundation.org,
        linux-kernel@...r.kernel.org, llvm@...ts.linux.dev,
        kbuild-all@...ts.01.org
Subject: Re: [kbuild-all] Re: [PATCH v6 7/7] kernfs: Replace per-fs rwsem with
 hashed ones.



On 2/15/2022 1:49 AM, Nathan Chancellor wrote:
> On Tue, Feb 15, 2022 at 01:19:23AM +0800, kernel test robot wrote:
>> Hi Imran,
>>
>> Thank you for the patch! Perhaps something to improve:
>>
>> [auto build test WARNING on 6d9bd4ad4ca08b1114e814c2c42383b8b13be631]
>>
>> url:    https://github.com/0day-ci/linux/commits/Imran-Khan/kernfs-Introduce-hashed-mutexes-to-replace-global-kernfs_open_file_mutex/20220214-200700
>> base:   6d9bd4ad4ca08b1114e814c2c42383b8b13be631
>> config: hexagon-randconfig-r012-20220213 (https://download.01.org/0day-ci/archive/20220214/202202142322.OezS0EtW-lkp@intel.com/config)
>> compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project ea071884b0cc7210b3cc5fe858f0e892a779a23b)
>> reproduce (this is a W=1 build):
>>          wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
>>          chmod +x ~/bin/make.cross
>>          # https://github.com/0day-ci/linux/commit/48eab913f80f1555d57b964ef7cdba17f5ec5d1f
>>          git remote add linux-review https://github.com/0day-ci/linux
>>          git fetch --no-tags linux-review Imran-Khan/kernfs-Introduce-hashed-mutexes-to-replace-global-kernfs_open_file_mutex/20220214-200700
>>          git checkout 48eab913f80f1555d57b964ef7cdba17f5ec5d1f
>>          # save the config file to linux build tree
>>          mkdir build_dir
>>          COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=hexagon SHELL=/bin/bash fs/kernfs/
>>
>> If you fix the issue, kindly add following tag as appropriate
>> Reported-by: kernel test robot <lkp@...el.com>
>>
>> All warnings (new ones prefixed by >>):
>>
>>>> fs/kernfs/dir.c:1619:7: warning: variable 'old_parent' is used uninitialized whenever 'if' condition is true [-Wsometimes-uninitialized]
>>                     if (!new_name)
>>                         ^~~~~~~~~
>>     fs/kernfs/dir.c:1653:50: note: uninitialized use occurs here
>>             up_write_kernfs_rwsem_rename_ns(kn, new_parent, old_parent);
>>                                                             ^~~~~~~~~~
>>     fs/kernfs/dir.c:1619:3: note: remove the 'if' if its condition is always false
>>                     if (!new_name)
>>                     ^~~~~~~~~~~~~~
>>     fs/kernfs/dir.c:1612:6: warning: variable 'old_parent' is used uninitialized whenever 'if' condition is true [-Wsometimes-uninitialized]
>>             if (kernfs_find_ns(new_parent, new_name, new_ns))
>>                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>>     fs/kernfs/dir.c:1653:50: note: uninitialized use occurs here
>>             up_write_kernfs_rwsem_rename_ns(kn, new_parent, old_parent);
>>                                                             ^~~~~~~~~~
>>     fs/kernfs/dir.c:1612:2: note: remove the 'if' if its condition is always false
>>             if (kernfs_find_ns(new_parent, new_name, new_ns))
>>             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>>     fs/kernfs/dir.c:1607:6: warning: variable 'old_parent' is used uninitialized whenever 'if' condition is true [-Wsometimes-uninitialized]
>>             if ((kn->parent == new_parent) && (kn->ns == new_ns) &&
>>                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>>     fs/kernfs/dir.c:1653:50: note: uninitialized use occurs here
>>             up_write_kernfs_rwsem_rename_ns(kn, new_parent, old_parent);
>>                                                             ^~~~~~~~~~
>>     fs/kernfs/dir.c:1607:2: note: remove the 'if' if its condition is always false
>>             if ((kn->parent == new_parent) && (kn->ns == new_ns) &&
>>             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>>     fs/kernfs/dir.c:1602:6: warning: variable 'old_parent' is used uninitialized whenever 'if' condition is true [-Wsometimes-uninitialized]
>>             if (!kernfs_active(kn) || !kernfs_active(new_parent) ||
>>                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>>     fs/kernfs/dir.c:1653:50: note: uninitialized use occurs here
>>             up_write_kernfs_rwsem_rename_ns(kn, new_parent, old_parent);
>>                                                             ^~~~~~~~~~
>>     fs/kernfs/dir.c:1602:2: note: remove the 'if' if its condition is always false
>>             if (!kernfs_active(kn) || !kernfs_active(new_parent) ||
>>             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>>>> fs/kernfs/dir.c:1602:6: warning: variable 'old_parent' is used uninitialized whenever '||' condition is true [-Wsometimes-uninitialized]
>>             if (!kernfs_active(kn) || !kernfs_active(new_parent) ||
>>                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>>     fs/kernfs/dir.c:1653:50: note: uninitialized use occurs here
>>             up_write_kernfs_rwsem_rename_ns(kn, new_parent, old_parent);
>>                                                             ^~~~~~~~~~
>>     fs/kernfs/dir.c:1602:6: note: remove the '||' if its condition is always false
>>             if (!kernfs_active(kn) || !kernfs_active(new_parent) ||
>>                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>>>> fs/kernfs/dir.c:1602:6: warning: variable 'old_parent' is used uninitialized whenever '||' condition is true [-Wsometimes-uninitialized]
>>             if (!kernfs_active(kn) || !kernfs_active(new_parent) ||
>>                 ^~~~~~~~~~~~~~~~~~
>>     fs/kernfs/dir.c:1653:50: note: uninitialized use occurs here
>>             up_write_kernfs_rwsem_rename_ns(kn, new_parent, old_parent);
>>                                                             ^~~~~~~~~~
>>     fs/kernfs/dir.c:1602:6: note: remove the '||' if its condition is always false
>>             if (!kernfs_active(kn) || !kernfs_active(new_parent) ||
>>                 ^~~~~~~~~~~~~~~~~~~~~
>>     fs/kernfs/dir.c:1591:32: note: initialize the variable 'old_parent' to silence this warning
>>             struct kernfs_node *old_parent;
>>                                           ^
>>                                            = NULL
>>     6 warnings generated.
>>
>>
>> vim +1619 fs/kernfs/dir.c
>>
>> fd7b9f7b9776b1 Tejun Heo          2013-11-28  1580
>> fd7b9f7b9776b1 Tejun Heo          2013-11-28  1581  /**
>> fd7b9f7b9776b1 Tejun Heo          2013-11-28  1582   * kernfs_rename_ns - move and rename a kernfs_node
>> 324a56e16e44ba Tejun Heo          2013-12-11  1583   * @kn: target node
>> fd7b9f7b9776b1 Tejun Heo          2013-11-28  1584   * @new_parent: new parent to put @sd under
>> fd7b9f7b9776b1 Tejun Heo          2013-11-28  1585   * @new_name: new name
>> fd7b9f7b9776b1 Tejun Heo          2013-11-28  1586   * @new_ns: new namespace tag
>> fd7b9f7b9776b1 Tejun Heo          2013-11-28  1587   */
>> 324a56e16e44ba Tejun Heo          2013-12-11  1588  int kernfs_rename_ns(struct kernfs_node *kn, struct kernfs_node *new_parent,
>> fd7b9f7b9776b1 Tejun Heo          2013-11-28  1589  		     const char *new_name, const void *new_ns)
>> fd7b9f7b9776b1 Tejun Heo          2013-11-28  1590  {
>> 3eef34ad7dc369 Tejun Heo          2014-02-07  1591  	struct kernfs_node *old_parent;
>> 3eef34ad7dc369 Tejun Heo          2014-02-07  1592  	const char *old_name = NULL;
>> fd7b9f7b9776b1 Tejun Heo          2013-11-28  1593  	int error;
>> fd7b9f7b9776b1 Tejun Heo          2013-11-28  1594
>> 3eef34ad7dc369 Tejun Heo          2014-02-07  1595  	/* can't move or rename root */
>> 3eef34ad7dc369 Tejun Heo          2014-02-07  1596  	if (!kn->parent)
>> 3eef34ad7dc369 Tejun Heo          2014-02-07  1597  		return -EINVAL;
>> 3eef34ad7dc369 Tejun Heo          2014-02-07  1598
>> 48eab913f80f15 Imran Khan         2022-02-14  1599  	down_write_kernfs_rwsem_rename_ns(kn, kn->parent, new_parent);
>> 798c75a0d44cdb Greg Kroah-Hartman 2014-01-13  1600
>> d0ae3d4347ee02 Tejun Heo          2013-12-11  1601  	error = -ENOENT;
>> ea015218f2f7ac Eric W. Biederman  2015-05-13 @1602  	if (!kernfs_active(kn) || !kernfs_active(new_parent) ||
>> ea015218f2f7ac Eric W. Biederman  2015-05-13  1603  	    (new_parent->flags & KERNFS_EMPTY_DIR))
>> d0ae3d4347ee02 Tejun Heo          2013-12-11  1604  		goto out;
>> d0ae3d4347ee02 Tejun Heo          2013-12-11  1605
>> fd7b9f7b9776b1 Tejun Heo          2013-11-28  1606  	error = 0;
>> adc5e8b58f4886 Tejun Heo          2013-12-11  1607  	if ((kn->parent == new_parent) && (kn->ns == new_ns) &&
>> adc5e8b58f4886 Tejun Heo          2013-12-11  1608  	    (strcmp(kn->name, new_name) == 0))
>> 798c75a0d44cdb Greg Kroah-Hartman 2014-01-13  1609  		goto out;	/* nothing to rename */
>> fd7b9f7b9776b1 Tejun Heo          2013-11-28  1610
>> fd7b9f7b9776b1 Tejun Heo          2013-11-28  1611  	error = -EEXIST;
>> fd7b9f7b9776b1 Tejun Heo          2013-11-28  1612  	if (kernfs_find_ns(new_parent, new_name, new_ns))
>> 798c75a0d44cdb Greg Kroah-Hartman 2014-01-13  1613  		goto out;
>> fd7b9f7b9776b1 Tejun Heo          2013-11-28  1614
>> 324a56e16e44ba Tejun Heo          2013-12-11  1615  	/* rename kernfs_node */
>> adc5e8b58f4886 Tejun Heo          2013-12-11  1616  	if (strcmp(kn->name, new_name) != 0) {
>> fd7b9f7b9776b1 Tejun Heo          2013-11-28  1617  		error = -ENOMEM;
>> 75287a677ba1be Andrzej Hajda      2015-02-13  1618  		new_name = kstrdup_const(new_name, GFP_KERNEL);
>> fd7b9f7b9776b1 Tejun Heo          2013-11-28 @1619  		if (!new_name)
>> 798c75a0d44cdb Greg Kroah-Hartman 2014-01-13  1620  			goto out;
>> 3eef34ad7dc369 Tejun Heo          2014-02-07  1621  	} else {
>> 3eef34ad7dc369 Tejun Heo          2014-02-07  1622  		new_name = NULL;
>> fd7b9f7b9776b1 Tejun Heo          2013-11-28  1623  	}
>> fd7b9f7b9776b1 Tejun Heo          2013-11-28  1624
>> fd7b9f7b9776b1 Tejun Heo          2013-11-28  1625  	/*
>> fd7b9f7b9776b1 Tejun Heo          2013-11-28  1626  	 * Move to the appropriate place in the appropriate directories rbtree.
>> fd7b9f7b9776b1 Tejun Heo          2013-11-28  1627  	 */
>> c637b8acbe079e Tejun Heo          2013-12-11  1628  	kernfs_unlink_sibling(kn);
>> fd7b9f7b9776b1 Tejun Heo          2013-11-28  1629  	kernfs_get(new_parent);
>> 3eef34ad7dc369 Tejun Heo          2014-02-07  1630
>> 3eef34ad7dc369 Tejun Heo          2014-02-07  1631  	/* rename_lock protects ->parent and ->name accessors */
>> 3eef34ad7dc369 Tejun Heo          2014-02-07  1632  	spin_lock_irq(&kernfs_rename_lock);
>> 3eef34ad7dc369 Tejun Heo          2014-02-07  1633
>> 3eef34ad7dc369 Tejun Heo          2014-02-07  1634  	old_parent = kn->parent;
>> adc5e8b58f4886 Tejun Heo          2013-12-11  1635  	kn->parent = new_parent;
>> 3eef34ad7dc369 Tejun Heo          2014-02-07  1636
>> 3eef34ad7dc369 Tejun Heo          2014-02-07  1637  	kn->ns = new_ns;
>> 3eef34ad7dc369 Tejun Heo          2014-02-07  1638  	if (new_name) {
>> 3eef34ad7dc369 Tejun Heo          2014-02-07  1639  		old_name = kn->name;
>> 3eef34ad7dc369 Tejun Heo          2014-02-07  1640  		kn->name = new_name;
>> 3eef34ad7dc369 Tejun Heo          2014-02-07  1641  	}
>> 3eef34ad7dc369 Tejun Heo          2014-02-07  1642
>> 3eef34ad7dc369 Tejun Heo          2014-02-07  1643  	spin_unlock_irq(&kernfs_rename_lock);
>> 3eef34ad7dc369 Tejun Heo          2014-02-07  1644
>> 9561a8961c708f Tejun Heo          2014-02-10  1645  	kn->hash = kernfs_name_hash(kn->name, kn->ns);
>> c637b8acbe079e Tejun Heo          2013-12-11  1646  	kernfs_link_sibling(kn);
>> fd7b9f7b9776b1 Tejun Heo          2013-11-28  1647
>> 3eef34ad7dc369 Tejun Heo          2014-02-07  1648  	kernfs_put(old_parent);
>> 75287a677ba1be Andrzej Hajda      2015-02-13  1649  	kfree_const(old_name);
>> 3eef34ad7dc369 Tejun Heo          2014-02-07  1650
>> fd7b9f7b9776b1 Tejun Heo          2013-11-28  1651  	error = 0;
>> ae34372eb8408b Tejun Heo          2014-01-10  1652   out:
>> 48eab913f80f15 Imran Khan         2022-02-14  1653  	up_write_kernfs_rwsem_rename_ns(kn, new_parent, old_parent);
>> fd7b9f7b9776b1 Tejun Heo          2013-11-28  1654  	return error;
>> fd7b9f7b9776b1 Tejun Heo          2013-11-28  1655  }
>> fd7b9f7b9776b1 Tejun Heo          2013-11-28  1656
>>
>> ---
>> 0-DAY CI Kernel Test Service, Intel Corporation
>> https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
>>
> 
> I am forwarding this along as a reply to the original posting so that
> this patch series is not picked up in its current form. This warning
> looks legitimate to me and it will break allmodconfig due to -Werror.
> 
> Intel folks, why did this get sent to the author privately, rather than
> as a reply to the original posting, given the patch is still in review?

Hi Nathan,

Thanks for the notice, it should be a bug in our system, will fix it asap.

Best Regards,
Rong Chen

> 
> Cheers,
> Nathan
> _______________________________________________
> kbuild-all mailing list -- kbuild-all@...ts.01.org
> To unsubscribe send an email to kbuild-all-leave@...ts.01.org
> 

Powered by blists - more mailing lists