All of lore.kernel.org
 help / color / mirror / Atom feed
* [allisonhenderson-xfs-work:xfs-5.19-compose_pptrs 25/32] fs/xfs/libxfs/xfs_attr.c:556:21: warning: Value stored to 'dp' during its initialization is never read [clang-analyzer-deadcode.DeadStores]
@ 2022-05-08 11:50 kernel test robot
  2022-05-09  3:16 ` kernel test robot
  0 siblings, 1 reply; 3+ messages in thread
From: kernel test robot @ 2022-05-08 11:50 UTC (permalink / raw)
  To: kbuild

[-- Attachment #1: Type: text/plain, Size: 30554 bytes --]

CC: llvm(a)lists.linux.dev
CC: kbuild-all(a)lists.01.org
BCC: lkp(a)intel.com
CC: linux-kernel(a)vger.kernel.org
TO: Allison Henderson <allison.henderson@oracle.com>
CC: Dave Chinner <dchinner@redhat.com>

tree:   https://github.com/allisonhenderson/xfs_work.git xfs-5.19-compose_pptrs
head:   74ecccf0e89a132c2490f3a63661c535974c6a08
commit: 7a5d447970de2d3b003b9015e2bce3bf0d15e3db [25/32] xfs: parent pointer attribute creation
:::::: branch date: 3 days ago
:::::: commit date: 3 days ago
config: x86_64-randconfig-c007 (https://download.01.org/0day-ci/archive/20220508/202205081904.eWJa1zBF-lkp(a)intel.com/config)
compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project 5e004fb787698440a387750db7f8028e7cb14cfc)
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/allisonhenderson/xfs_work/commit/7a5d447970de2d3b003b9015e2bce3bf0d15e3db
        git remote add allisonhenderson-xfs-work https://github.com/allisonhenderson/xfs_work.git
        git fetch --no-tags allisonhenderson-xfs-work xfs-5.19-compose_pptrs
        git checkout 7a5d447970de2d3b003b9015e2bce3bf0d15e3db
        # save the config file
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=x86_64 clang-analyzer 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>


clang-analyzer warnings: (new ones prefixed by >>)
   note: expanded from here
   include/linux/fortify-string.h:45:29: note: expanded from macro '__underlying_memcpy'
   #define __underlying_memcpy     __builtin_memcpy
                                   ^~~~~~~~~~~~~~~~
   fs/xfs/xfs_rmap_item.c:638:2: note: Call to function 'memcpy' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memcpy_s' in case of C11
           memcpy(ruip->rui_format.rui_extents, extp, count * sizeof(*extp));
           ^
   include/linux/fortify-string.h:369:26: note: expanded from macro 'memcpy'
   #define memcpy(p, q, s)  __fortify_memcpy_chk(p, q, s,                  \
                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/fortify-string.h:362:2: note: expanded from macro '__fortify_memcpy_chk'
           __underlying_##op(p, q, __fortify_size);                        \
           ^~~~~~~~~~~~~~~~~
   note: expanded from here
   include/linux/fortify-string.h:45:29: note: expanded from macro '__underlying_memcpy'
   #define __underlying_memcpy     __builtin_memcpy
                                   ^~~~~~~~~~~~~~~~
   Suppressed 48 warnings (48 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   44 warnings generated.
   Suppressed 44 warnings (44 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   44 warnings generated.
   arch/x86/kernel/smpboot.c:863:2: warning: Value stored to 'send_status' is never read [clang-analyzer-deadcode.DeadStores]
           send_status = safe_apic_wait_icr_idle();
           ^             ~~~~~~~~~~~~~~~~~~~~~~~~~
   arch/x86/kernel/smpboot.c:863:2: note: Value stored to 'send_status' is never read
           send_status = safe_apic_wait_icr_idle();
           ^             ~~~~~~~~~~~~~~~~~~~~~~~~~
   Suppressed 43 warnings (43 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   27 warnings generated.
   Suppressed 27 warnings (27 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   44 warnings generated.
   Suppressed 44 warnings (44 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   45 warnings generated.
   arch/x86/kernel/apic/apic.c:623:2: warning: Call to function 'memcpy' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memcpy_s' in case of C11 [clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
           memcpy(levt, &lapic_clockevent, sizeof(*levt));
           ^
   include/linux/fortify-string.h:369:26: note: expanded from macro 'memcpy'
   #define memcpy(p, q, s)  __fortify_memcpy_chk(p, q, s,                  \
                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/fortify-string.h:362:2: note: expanded from macro '__fortify_memcpy_chk'
           __underlying_##op(p, q, __fortify_size);                        \
           ^~~~~~~~~~~~~~~~~
   note: expanded from here
   include/linux/fortify-string.h:45:29: note: expanded from macro '__underlying_memcpy'
   #define __underlying_memcpy     __builtin_memcpy
                                   ^~~~~~~~~~~~~~~~
   arch/x86/kernel/apic/apic.c:623:2: note: Call to function 'memcpy' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memcpy_s' in case of C11
           memcpy(levt, &lapic_clockevent, sizeof(*levt));
           ^
   include/linux/fortify-string.h:369:26: note: expanded from macro 'memcpy'
   #define memcpy(p, q, s)  __fortify_memcpy_chk(p, q, s,                  \
                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/fortify-string.h:362:2: note: expanded from macro '__fortify_memcpy_chk'
           __underlying_##op(p, q, __fortify_size);                        \
           ^~~~~~~~~~~~~~~~~
   note: expanded from here
   include/linux/fortify-string.h:45:29: note: expanded from macro '__underlying_memcpy'
   #define __underlying_memcpy     __builtin_memcpy
                                   ^~~~~~~~~~~~~~~~
   arch/x86/kernel/apic/apic.c:2517:2: warning: Call to function 'memset' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memset_s' in case of C11 [clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
           memset(msg, 0, sizeof(*msg));
           ^
   include/linux/fortify-string.h:272:25: note: expanded from macro 'memset'
   #define memset(p, c, s) __fortify_memset_chk(p, c, s,                   \
                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/fortify-string.h:265:2: note: expanded from macro '__fortify_memset_chk'
           __underlying_memset(p, c, __fortify_size);                      \
           ^~~~~~~~~~~~~~~~~~~
   include/linux/fortify-string.h:47:29: note: expanded from macro '__underlying_memset'
   #define __underlying_memset     __builtin_memset
                                   ^~~~~~~~~~~~~~~~
   arch/x86/kernel/apic/apic.c:2517:2: note: Call to function 'memset' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memset_s' in case of C11
           memset(msg, 0, sizeof(*msg));
           ^
   include/linux/fortify-string.h:272:25: note: expanded from macro 'memset'
   #define memset(p, c, s) __fortify_memset_chk(p, c, s,                   \
                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/fortify-string.h:265:2: note: expanded from macro '__fortify_memset_chk'
           __underlying_memset(p, c, __fortify_size);                      \
           ^~~~~~~~~~~~~~~~~~~
   include/linux/fortify-string.h:47:29: note: expanded from macro '__underlying_memset'
   #define __underlying_memset     __builtin_memset
                                   ^~~~~~~~~~~~~~~~
   Suppressed 43 warnings (43 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   46 warnings generated.
   Suppressed 46 warnings (46 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   57 warnings generated.
   fs/xfs/libxfs/xfs_attr.c:495:2: warning: Value stored to 'error' is never read [clang-analyzer-deadcode.DeadStores]
           error = 0;
           ^       ~
   fs/xfs/libxfs/xfs_attr.c:495:2: note: Value stored to 'error' is never read
           error = 0;
           ^       ~
>> fs/xfs/libxfs/xfs_attr.c:556:21: warning: Value stored to 'dp' during its initialization is never read [clang-analyzer-deadcode.DeadStores]
           struct xfs_inode                *dp = args->dp;
                                            ^~   ~~~~~~~~
   fs/xfs/libxfs/xfs_attr.c:556:21: note: Value stored to 'dp' during its initialization is never read
           struct xfs_inode                *dp = args->dp;
                                            ^~   ~~~~~~~~
>> fs/xfs/libxfs/xfs_attr.c:559:21: warning: Value stored to 'mp' during its initialization is never read [clang-analyzer-deadcode.DeadStores]
           struct xfs_mount                *mp = args->dp->i_mount;
                                            ^~   ~~~~~~~~~~~~~~~~~
   fs/xfs/libxfs/xfs_attr.c:559:21: note: Value stored to 'mp' during its initialization is never read
           struct xfs_mount                *mp = args->dp->i_mount;
                                            ^~   ~~~~~~~~~~~~~~~~~
   fs/xfs/libxfs/xfs_attr.c:1402:2: warning: Value stored to 'error' is never read [clang-analyzer-deadcode.DeadStores]
           error = xfs_attr_node_removename(args, state);
           ^       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   fs/xfs/libxfs/xfs_attr.c:1402:2: note: Value stored to 'error' is never read
           error = xfs_attr_node_removename(args, state);
           ^       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   Suppressed 53 warnings (47 in non-user code, 6 with check filters).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   83 warnings generated.
   fs/xfs/libxfs/xfs_attr_leaf.c:523:2: warning: Call to function 'memcpy' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memcpy_s' in case of C11 [clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
           memcpy(args->value, value, valuelen);
           ^
   include/linux/fortify-string.h:369:26: note: expanded from macro 'memcpy'
   #define memcpy(p, q, s)  __fortify_memcpy_chk(p, q, s,                  \
                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/fortify-string.h:362:2: note: expanded from macro '__fortify_memcpy_chk'
           __underlying_##op(p, q, __fortify_size);                        \
           ^~~~~~~~~~~~~~~~~
   note: expanded from here
   include/linux/fortify-string.h:45:29: note: expanded from macro '__underlying_memcpy'
   #define __underlying_memcpy     __builtin_memcpy
                                   ^~~~~~~~~~~~~~~~
   fs/xfs/libxfs/xfs_attr_leaf.c:523:2: note: Call to function 'memcpy' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memcpy_s' in case of C11
           memcpy(args->value, value, valuelen);
           ^
   include/linux/fortify-string.h:369:26: note: expanded from macro 'memcpy'
   #define memcpy(p, q, s)  __fortify_memcpy_chk(p, q, s,                  \
                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/fortify-string.h:362:2: note: expanded from macro '__fortify_memcpy_chk'
           __underlying_##op(p, q, __fortify_size);                        \
           ^~~~~~~~~~~~~~~~~
   note: expanded from here
   include/linux/fortify-string.h:45:29: note: expanded from macro '__underlying_memcpy'
   #define __underlying_memcpy     __builtin_memcpy
                                   ^~~~~~~~~~~~~~~~
   fs/xfs/libxfs/xfs_attr_leaf.c:678:2: warning: Call to function 'memset' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memset_s' in case of C11 [clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
           memset(hdr, 0, sizeof(*hdr));
           ^
   include/linux/fortify-string.h:272:25: note: expanded from macro 'memset'
   #define memset(p, c, s) __fortify_memset_chk(p, c, s,                   \
                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/fortify-string.h:265:2: note: expanded from macro '__fortify_memset_chk'
           __underlying_memset(p, c, __fortify_size);                      \
           ^~~~~~~~~~~~~~~~~~~
   include/linux/fortify-string.h:47:29: note: expanded from macro '__underlying_memset'
   #define __underlying_memset     __builtin_memset
                                   ^~~~~~~~~~~~~~~~
   fs/xfs/libxfs/xfs_attr_leaf.c:678:2: note: Call to function 'memset' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memset_s' in case of C11
           memset(hdr, 0, sizeof(*hdr));
           ^
   include/linux/fortify-string.h:272:25: note: expanded from macro 'memset'
   #define memset(p, c, s) __fortify_memset_chk(p, c, s,                   \
                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/fortify-string.h:265:2: note: expanded from macro '__fortify_memset_chk'
           __underlying_memset(p, c, __fortify_size);                      \
           ^~~~~~~~~~~~~~~~~~~
   include/linux/fortify-string.h:47:29: note: expanded from macro '__underlying_memset'
   #define __underlying_memset     __builtin_memset
                                   ^~~~~~~~~~~~~~~~
   fs/xfs/libxfs/xfs_attr_leaf.c:765:2: warning: Call to function 'memcpy' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memcpy_s' in case of C11 [clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
           memcpy(sfe->nameval, args->name, args->namelen);
           ^
   include/linux/fortify-string.h:369:26: note: expanded from macro 'memcpy'
   #define memcpy(p, q, s)  __fortify_memcpy_chk(p, q, s,                  \
                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/fortify-string.h:362:2: note: expanded from macro '__fortify_memcpy_chk'
           __underlying_##op(p, q, __fortify_size);                        \
           ^~~~~~~~~~~~~~~~~
   note: expanded from here
   include/linux/fortify-string.h:45:29: note: expanded from macro '__underlying_memcpy'
   #define __underlying_memcpy     __builtin_memcpy
                                   ^~~~~~~~~~~~~~~~
   fs/xfs/libxfs/xfs_attr_leaf.c:765:2: note: Call to function 'memcpy' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memcpy_s' in case of C11
           memcpy(sfe->nameval, args->name, args->namelen);
           ^
   include/linux/fortify-string.h:369:26: note: expanded from macro 'memcpy'
   #define memcpy(p, q, s)  __fortify_memcpy_chk(p, q, s,                  \
                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/fortify-string.h:362:2: note: expanded from macro '__fortify_memcpy_chk'
           __underlying_##op(p, q, __fortify_size);                        \
           ^~~~~~~~~~~~~~~~~
   note: expanded from here
   include/linux/fortify-string.h:45:29: note: expanded from macro '__underlying_memcpy'
   #define __underlying_memcpy     __builtin_memcpy
                                   ^~~~~~~~~~~~~~~~
   fs/xfs/libxfs/xfs_attr_leaf.c:766:2: warning: Call to function 'memcpy' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memcpy_s' in case of C11 [clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
           memcpy(&sfe->nameval[args->namelen], args->value, args->valuelen);
           ^
   include/linux/fortify-string.h:369:26: note: expanded from macro 'memcpy'
   #define memcpy(p, q, s)  __fortify_memcpy_chk(p, q, s,                  \
                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/fortify-string.h:362:2: note: expanded from macro '__fortify_memcpy_chk'
           __underlying_##op(p, q, __fortify_size);                        \
           ^~~~~~~~~~~~~~~~~
   note: expanded from here

vim +/dp +556 fs/xfs/libxfs/xfs_attr.c

e683cdbb8baf82 Dave Chinner      2022-04-14  542  
db1a28cc591c1a Allison Collins   2020-07-20  543  /*
d56c93997e96ed Dave Chinner      2022-04-14  544   * Run the attribute operation specified in @attr.
d56c93997e96ed Dave Chinner      2022-04-14  545   *
d56c93997e96ed Dave Chinner      2022-04-14  546   * This routine is meant to function as a delayed operation and will set the
d56c93997e96ed Dave Chinner      2022-04-14  547   * state to XFS_DAS_DONE when the operation is complete.  Calling functions will
d56c93997e96ed Dave Chinner      2022-04-14  548   * need to handle this, and recall the function until either an error or
d56c93997e96ed Dave Chinner      2022-04-14  549   * XFS_DAS_DONE is detected.
db1a28cc591c1a Allison Collins   2020-07-20  550   */
db1a28cc591c1a Allison Collins   2020-07-20  551  int
8f502a4009822a Allison Henderson 2021-05-21  552  xfs_attr_set_iter(
133b4f4350cc51 Allison Henderson 2022-04-11  553  	struct xfs_attr_item		*attr)
db1a28cc591c1a Allison Collins   2020-07-20  554  {
133b4f4350cc51 Allison Henderson 2022-04-11  555  	struct xfs_da_args              *args = attr->xattri_da_args;
7a5d447970de2d Allison Henderson 2022-03-22 @556  	struct xfs_inode		*dp = args->dp;
7a5d447970de2d Allison Henderson 2022-03-22  557  	struct xfs_buf			*bp = NULL;
7a5d447970de2d Allison Henderson 2022-03-22  558  	int				sf_size, forkoff, error = 0;
7a5d447970de2d Allison Henderson 2022-03-22 @559  	struct xfs_mount		*mp = args->dp->i_mount;
7a5d447970de2d Allison Henderson 2022-03-22  560  
db1a28cc591c1a Allison Collins   2020-07-20  561  
8f502a4009822a Allison Henderson 2021-05-21  562  	/* State machine switch */
100ba63970eed9 Dave Chinner      2022-04-14  563  next_state:
133b4f4350cc51 Allison Henderson 2022-04-11  564  	switch (attr->xattri_dela_state) {
8f502a4009822a Allison Henderson 2021-05-21  565  	case XFS_DAS_UNINIT:
7a5d447970de2d Allison Henderson 2022-03-22  566  		sf_size = sizeof(struct xfs_attr_sf_hdr) +
7a5d447970de2d Allison Henderson 2022-03-22  567  			  xfs_attr_sf_entsize_byname(args->namelen,
7a5d447970de2d Allison Henderson 2022-03-22  568  							     args->valuelen);
7a5d447970de2d Allison Henderson 2022-03-22  569  		xfs_bmap_set_attrforkoff(args->dp, sf_size, NULL);
7a5d447970de2d Allison Henderson 2022-03-22  570  		args->dp->i_afp = kmem_cache_zalloc(xfs_ifork_cache, 0);
7a5d447970de2d Allison Henderson 2022-03-22  571  		args->dp->i_afp->if_format = XFS_DINODE_FMT_EXTENTS;
5a7bf541843b13 Dave Chinner      2022-04-14  572  	case XFS_DAS_SF_ADD:
133b4f4350cc51 Allison Henderson 2022-04-11  573  		return xfs_attr_sf_addname(attr);
5a7bf541843b13 Dave Chinner      2022-04-14  574  	case XFS_DAS_LEAF_ADD:
133b4f4350cc51 Allison Henderson 2022-04-11  575  		return xfs_attr_leaf_addname(attr);
5a7bf541843b13 Dave Chinner      2022-04-14  576  	case XFS_DAS_NODE_ADD:
5a7bf541843b13 Dave Chinner      2022-04-14  577  		return xfs_attr_node_addname(attr);
3f562d092bb1ed Allison Henderson 2021-02-12  578  
b8d9a2124c0193 Dave Chinner      2022-04-14  579  	case XFS_DAS_SF_REMOVE:
f589c4f3a7a7d6 Dave Chinner      2022-04-14  580  		error = xfs_attr_sf_removename(args);
f589c4f3a7a7d6 Dave Chinner      2022-04-14  581  		attr->xattri_dela_state = xfs_attr_complete_op(attr,
f589c4f3a7a7d6 Dave Chinner      2022-04-14  582  						xfs_attr_init_add_state(args));
f589c4f3a7a7d6 Dave Chinner      2022-04-14  583  		break;
b8d9a2124c0193 Dave Chinner      2022-04-14  584  	case XFS_DAS_LEAF_REMOVE:
f589c4f3a7a7d6 Dave Chinner      2022-04-14  585  		error = xfs_attr_leaf_removename(args);
f589c4f3a7a7d6 Dave Chinner      2022-04-14  586  		attr->xattri_dela_state = xfs_attr_complete_op(attr,
f589c4f3a7a7d6 Dave Chinner      2022-04-14  587  						xfs_attr_init_add_state(args));
f589c4f3a7a7d6 Dave Chinner      2022-04-14  588  		break;
b8d9a2124c0193 Dave Chinner      2022-04-14  589  	case XFS_DAS_NODE_REMOVE:
b8d9a2124c0193 Dave Chinner      2022-04-14  590  		error = xfs_attr_node_removename_setup(attr);
b8d9a2124c0193 Dave Chinner      2022-04-14  591  		if (error)
b8d9a2124c0193 Dave Chinner      2022-04-14  592  			return error;
b8d9a2124c0193 Dave Chinner      2022-04-14  593  		attr->xattri_dela_state = XFS_DAS_NODE_REMOVE_RMT;
b8d9a2124c0193 Dave Chinner      2022-04-14  594  		if (args->rmtblkno == 0)
b8d9a2124c0193 Dave Chinner      2022-04-14  595  			attr->xattri_dela_state++;
b8d9a2124c0193 Dave Chinner      2022-04-14  596  		break;
b8d9a2124c0193 Dave Chinner      2022-04-14  597  
020dee1bf99e76 Dave Chinner      2022-04-14  598  	case XFS_DAS_LEAF_SET_RMT:
020dee1bf99e76 Dave Chinner      2022-04-14  599  	case XFS_DAS_NODE_SET_RMT:
37e7bb8434f8b2 Allison Henderson 2022-04-11  600  		error = xfs_attr_rmtval_find_space(attr);
83c6e70789ff37 Allison Henderson 2021-04-19  601  		if (error)
83c6e70789ff37 Allison Henderson 2021-04-19  602  			return error;
100ba63970eed9 Dave Chinner      2022-04-14  603  		attr->xattri_dela_state++;
f1fdd499537724 Dave Chinner      2022-04-14  604  		fallthrough;
020dee1bf99e76 Dave Chinner      2022-04-14  605  
f1fdd499537724 Dave Chinner      2022-04-14  606  	case XFS_DAS_LEAF_ALLOC_RMT:
100ba63970eed9 Dave Chinner      2022-04-14  607  	case XFS_DAS_NODE_ALLOC_RMT:
020dee1bf99e76 Dave Chinner      2022-04-14  608  		error = xfs_attr_rmtval_alloc(attr);
8f502a4009822a Allison Henderson 2021-05-21  609  		if (error)
8f502a4009822a Allison Henderson 2021-05-21  610  			return error;
f027184d93cf76 Dave Chinner      2022-04-14  611  		/*
f027184d93cf76 Dave Chinner      2022-04-14  612  		 * If there is still more to allocate we need to roll the
f027184d93cf76 Dave Chinner      2022-04-14  613  		 * transaction so we have a full transaction reservation for
f027184d93cf76 Dave Chinner      2022-04-14  614  		 * the next allocation.
f027184d93cf76 Dave Chinner      2022-04-14  615  		 */
f027184d93cf76 Dave Chinner      2022-04-14  616  		if (attr->xattri_blkcnt > 0)
f027184d93cf76 Dave Chinner      2022-04-14  617  			break;
020dee1bf99e76 Dave Chinner      2022-04-14  618  		if (attr->xattri_dela_state == XFS_DAS_DONE)
020dee1bf99e76 Dave Chinner      2022-04-14  619  			break;
f027184d93cf76 Dave Chinner      2022-04-14  620  
f027184d93cf76 Dave Chinner      2022-04-14  621  		goto next_state;
83c6e70789ff37 Allison Henderson 2021-04-19  622  
020dee1bf99e76 Dave Chinner      2022-04-14  623  	case XFS_DAS_LEAF_REPLACE:
020dee1bf99e76 Dave Chinner      2022-04-14  624  	case XFS_DAS_NODE_REPLACE:
83c6e70789ff37 Allison Henderson 2021-04-19  625  		/*
f027184d93cf76 Dave Chinner      2022-04-14  626  		 * We must "flip" the incomplete flags on the "new" and "old"
f027184d93cf76 Dave Chinner      2022-04-14  627  		 * attribute/value pairs so that one disappears and one appears
6e971e92677394 Dave Chinner      2022-04-14  628  		 * atomically.
83c6e70789ff37 Allison Henderson 2021-04-19  629  		 */
83c6e70789ff37 Allison Henderson 2021-04-19  630  		error = xfs_attr3_leaf_flipflags(args);
83c6e70789ff37 Allison Henderson 2021-04-19  631  		if (error)
83c6e70789ff37 Allison Henderson 2021-04-19  632  			return error;
83c6e70789ff37 Allison Henderson 2021-04-19  633  		/*
6e971e92677394 Dave Chinner      2022-04-14  634  		 * We must commit the flag value change now to make it atomic
6e971e92677394 Dave Chinner      2022-04-14  635  		 * and then we can start the next trans in series at REMOVE_OLD.
83c6e70789ff37 Allison Henderson 2021-04-19  636  		 */
100ba63970eed9 Dave Chinner      2022-04-14  637  		attr->xattri_dela_state++;
020dee1bf99e76 Dave Chinner      2022-04-14  638  		break;
f2d5674061121e Allison Henderson 2022-04-11  639  
f027184d93cf76 Dave Chinner      2022-04-14  640  	case XFS_DAS_LEAF_REMOVE_OLD:
f027184d93cf76 Dave Chinner      2022-04-14  641  	case XFS_DAS_NODE_REMOVE_OLD:
83c6e70789ff37 Allison Henderson 2021-04-19  642  		/*
6e971e92677394 Dave Chinner      2022-04-14  643  		 * If we have a remote attr, start the process of removing it
6e971e92677394 Dave Chinner      2022-04-14  644  		 * by invalidating any cached buffers.
6e971e92677394 Dave Chinner      2022-04-14  645  		 *
6e971e92677394 Dave Chinner      2022-04-14  646  		 * If we don't have a remote attr, we skip the remote block
6e971e92677394 Dave Chinner      2022-04-14  647  		 * removal state altogether with a second state increment.
83c6e70789ff37 Allison Henderson 2021-04-19  648  		 */
83c6e70789ff37 Allison Henderson 2021-04-19  649  		xfs_attr_restore_rmt_blk(args);
6e971e92677394 Dave Chinner      2022-04-14  650  		if (args->rmtblkno) {
83c6e70789ff37 Allison Henderson 2021-04-19  651  			error = xfs_attr_rmtval_invalidate(args);
83c6e70789ff37 Allison Henderson 2021-04-19  652  			if (error)
83c6e70789ff37 Allison Henderson 2021-04-19  653  				return error;
6e971e92677394 Dave Chinner      2022-04-14  654  		} else {
6e971e92677394 Dave Chinner      2022-04-14  655  			attr->xattri_dela_state++;
6e971e92677394 Dave Chinner      2022-04-14  656  		}
83c6e70789ff37 Allison Henderson 2021-04-19  657  
100ba63970eed9 Dave Chinner      2022-04-14  658  		attr->xattri_dela_state++;
6e971e92677394 Dave Chinner      2022-04-14  659  		goto next_state;
6e971e92677394 Dave Chinner      2022-04-14  660  
6e971e92677394 Dave Chinner      2022-04-14  661  	case XFS_DAS_LEAF_REMOVE_RMT:
6e971e92677394 Dave Chinner      2022-04-14  662  	case XFS_DAS_NODE_REMOVE_RMT:
37e7bb8434f8b2 Allison Henderson 2022-04-11  663  		error = xfs_attr_rmtval_remove(attr);
d56c93997e96ed Dave Chinner      2022-04-14  664  		if (error == -EAGAIN) {
d56c93997e96ed Dave Chinner      2022-04-14  665  			error = 0;
6e971e92677394 Dave Chinner      2022-04-14  666  			break;
d56c93997e96ed Dave Chinner      2022-04-14  667  		}
83c6e70789ff37 Allison Henderson 2021-04-19  668  		if (error)
83c6e70789ff37 Allison Henderson 2021-04-19  669  			return error;
8f502a4009822a Allison Henderson 2021-05-21  670  
100ba63970eed9 Dave Chinner      2022-04-14  671  		/*
6e971e92677394 Dave Chinner      2022-04-14  672  		 * We've finished removing the remote attr blocks, so commit the
6e971e92677394 Dave Chinner      2022-04-14  673  		 * transaction and move on to removing the attr name from the
6e971e92677394 Dave Chinner      2022-04-14  674  		 * leaf/node block. Removing the attr might require a full
6e971e92677394 Dave Chinner      2022-04-14  675  		 * transaction reservation for btree block freeing, so we
6e971e92677394 Dave Chinner      2022-04-14  676  		 * can't do that in the same transaction where we removed the
6e971e92677394 Dave Chinner      2022-04-14  677  		 * remote attr blocks.
100ba63970eed9 Dave Chinner      2022-04-14  678  		 */
100ba63970eed9 Dave Chinner      2022-04-14  679  		attr->xattri_dela_state++;
6e971e92677394 Dave Chinner      2022-04-14  680  		break;
100ba63970eed9 Dave Chinner      2022-04-14  681  
e683cdbb8baf82 Dave Chinner      2022-04-14  682  	case XFS_DAS_LEAF_REMOVE_ATTR:
e683cdbb8baf82 Dave Chinner      2022-04-14  683  		error = xfs_attr_leaf_remove_attr(attr);
f589c4f3a7a7d6 Dave Chinner      2022-04-14  684  		attr->xattri_dela_state = xfs_attr_complete_op(attr,
f589c4f3a7a7d6 Dave Chinner      2022-04-14  685  						xfs_attr_init_add_state(args));
e683cdbb8baf82 Dave Chinner      2022-04-14  686  		break;
5d954cc09f6bae Allison Henderson 2021-04-26  687  
e683cdbb8baf82 Dave Chinner      2022-04-14  688  	case XFS_DAS_NODE_REMOVE_ATTR:
e683cdbb8baf82 Dave Chinner      2022-04-14  689  		error = xfs_attr_node_remove_attr(attr);
f589c4f3a7a7d6 Dave Chinner      2022-04-14  690  		attr->xattri_dela_state = xfs_attr_complete_op(attr,
f589c4f3a7a7d6 Dave Chinner      2022-04-14  691  						xfs_attr_init_add_state(args));
8f502a4009822a Allison Henderson 2021-05-21  692  		break;
8f502a4009822a Allison Henderson 2021-05-21  693  	default:
4a4957c16dc674 Allison Henderson 2021-05-21  694  		ASSERT(0);
8f502a4009822a Allison Henderson 2021-05-21  695  		break;
8f502a4009822a Allison Henderson 2021-05-21  696  	}
020dee1bf99e76 Dave Chinner      2022-04-14  697  
020dee1bf99e76 Dave Chinner      2022-04-14  698  	trace_xfs_attr_set_iter_return(attr->xattri_dela_state, args->dp);
6ca5a4a1f52952 Allison Henderson 2021-04-12  699  	return error;
2f3cd809196381 Allison Henderson 2018-10-18  700  }
2f3cd809196381 Allison Henderson 2018-10-18  701  

-- 
0-DAY CI Kernel Test Service
https://01.org/lkp

^ permalink raw reply	[flat|nested] 3+ messages in thread

* [allisonhenderson-xfs-work:xfs-5.19-compose_pptrs 25/32] fs/xfs/libxfs/xfs_attr.c:556:21: warning: Value stored to 'dp' during its initialization is never read [clang-analyzer-deadcode.DeadStores]
  2022-05-08 11:50 [allisonhenderson-xfs-work:xfs-5.19-compose_pptrs 25/32] fs/xfs/libxfs/xfs_attr.c:556:21: warning: Value stored to 'dp' during its initialization is never read [clang-analyzer-deadcode.DeadStores] kernel test robot
@ 2022-05-09  3:16 ` kernel test robot
  0 siblings, 0 replies; 3+ messages in thread
From: kernel test robot @ 2022-05-09  3:16 UTC (permalink / raw)
  To: Allison Henderson
  Cc: llvm, kbuild-all, Linux Kernel Mailing List, Dave Chinner

tree:   https://github.com/allisonhenderson/xfs_work.git xfs-5.19-compose_pptrs
head:   74ecccf0e89a132c2490f3a63661c535974c6a08
commit: 7a5d447970de2d3b003b9015e2bce3bf0d15e3db [25/32] xfs: parent pointer attribute creation
config: x86_64-randconfig-c007 (https://download.01.org/0day-ci/archive/20220508/202205081904.eWJa1zBF-lkp@intel.com/config)
compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project 5e004fb787698440a387750db7f8028e7cb14cfc)
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/allisonhenderson/xfs_work/commit/7a5d447970de2d3b003b9015e2bce3bf0d15e3db
         git remote add allisonhenderson-xfs-work https://github.com/allisonhenderson/xfs_work.git
         git fetch --no-tags allisonhenderson-xfs-work xfs-5.19-compose_pptrs
         git checkout 7a5d447970de2d3b003b9015e2bce3bf0d15e3db
         # save the config file
         COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=x86_64 clang-analyzer

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <yujie.liu@intel.com>


clang-analyzer warnings: (new ones prefixed by >>)

 >> fs/xfs/libxfs/xfs_attr.c:556:21: warning: Value stored to 'dp' during its initialization is never read [clang-analyzer-deadcode.DeadStores]
            struct xfs_inode                *dp = args->dp;
                                             ^~   ~~~~~~~~
 >> fs/xfs/libxfs/xfs_attr.c:559:21: warning: Value stored to 'mp' during its initialization is never read [clang-analyzer-deadcode.DeadStores]
            struct xfs_mount                *mp = args->dp->i_mount;
                                             ^~   ~~~~~~~~~~~~~~~~~

vim +/dp +556 fs/xfs/libxfs/xfs_attr.c

e683cdbb8baf82 Dave Chinner      2022-04-14  542
db1a28cc591c1a Allison Collins   2020-07-20  543  /*
d56c93997e96ed Dave Chinner      2022-04-14  544   * Run the attribute operation specified in @attr.
d56c93997e96ed Dave Chinner      2022-04-14  545   *
d56c93997e96ed Dave Chinner      2022-04-14  546   * This routine is meant to function as a delayed operation and will set the
d56c93997e96ed Dave Chinner      2022-04-14  547   * state to XFS_DAS_DONE when the operation is complete.  Calling functions will
d56c93997e96ed Dave Chinner      2022-04-14  548   * need to handle this, and recall the function until either an error or
d56c93997e96ed Dave Chinner      2022-04-14  549   * XFS_DAS_DONE is detected.
db1a28cc591c1a Allison Collins   2020-07-20  550   */
db1a28cc591c1a Allison Collins   2020-07-20  551  int
8f502a4009822a Allison Henderson 2021-05-21  552  xfs_attr_set_iter(
133b4f4350cc51 Allison Henderson 2022-04-11  553  	struct xfs_attr_item		*attr)
db1a28cc591c1a Allison Collins   2020-07-20  554  {
133b4f4350cc51 Allison Henderson 2022-04-11  555  	struct xfs_da_args              *args = attr->xattri_da_args;
7a5d447970de2d Allison Henderson 2022-03-22 @556  	struct xfs_inode		*dp = args->dp;
7a5d447970de2d Allison Henderson 2022-03-22  557  	struct xfs_buf			*bp = NULL;
7a5d447970de2d Allison Henderson 2022-03-22  558  	int				sf_size, forkoff, error = 0;
7a5d447970de2d Allison Henderson 2022-03-22 @559  	struct xfs_mount		*mp = args->dp->i_mount;
7a5d447970de2d Allison Henderson 2022-03-22  560
db1a28cc591c1a Allison Collins   2020-07-20  561
8f502a4009822a Allison Henderson 2021-05-21  562  	/* State machine switch */
100ba63970eed9 Dave Chinner      2022-04-14  563  next_state:
133b4f4350cc51 Allison Henderson 2022-04-11  564  	switch (attr->xattri_dela_state) {
8f502a4009822a Allison Henderson 2021-05-21  565  	case XFS_DAS_UNINIT:
7a5d447970de2d Allison Henderson 2022-03-22  566  		sf_size = sizeof(struct xfs_attr_sf_hdr) +
7a5d447970de2d Allison Henderson 2022-03-22  567  			  xfs_attr_sf_entsize_byname(args->namelen,
7a5d447970de2d Allison Henderson 2022-03-22  568  							     args->valuelen);
7a5d447970de2d Allison Henderson 2022-03-22  569  		xfs_bmap_set_attrforkoff(args->dp, sf_size, NULL);
7a5d447970de2d Allison Henderson 2022-03-22  570  		args->dp->i_afp = kmem_cache_zalloc(xfs_ifork_cache, 0);
7a5d447970de2d Allison Henderson 2022-03-22  571  		args->dp->i_afp->if_format = XFS_DINODE_FMT_EXTENTS;
5a7bf541843b13 Dave Chinner      2022-04-14  572  	case XFS_DAS_SF_ADD:
133b4f4350cc51 Allison Henderson 2022-04-11  573  		return xfs_attr_sf_addname(attr);
5a7bf541843b13 Dave Chinner      2022-04-14  574  	case XFS_DAS_LEAF_ADD:
133b4f4350cc51 Allison Henderson 2022-04-11  575  		return xfs_attr_leaf_addname(attr);
5a7bf541843b13 Dave Chinner      2022-04-14  576  	case XFS_DAS_NODE_ADD:
5a7bf541843b13 Dave Chinner      2022-04-14  577  		return xfs_attr_node_addname(attr);
3f562d092bb1ed Allison Henderson 2021-02-12  578
b8d9a2124c0193 Dave Chinner      2022-04-14  579  	case XFS_DAS_SF_REMOVE:
f589c4f3a7a7d6 Dave Chinner      2022-04-14  580  		error = xfs_attr_sf_removename(args);
f589c4f3a7a7d6 Dave Chinner      2022-04-14  581  		attr->xattri_dela_state = xfs_attr_complete_op(attr,
f589c4f3a7a7d6 Dave Chinner      2022-04-14  582  						xfs_attr_init_add_state(args));
f589c4f3a7a7d6 Dave Chinner      2022-04-14  583  		break;
b8d9a2124c0193 Dave Chinner      2022-04-14  584  	case XFS_DAS_LEAF_REMOVE:
f589c4f3a7a7d6 Dave Chinner      2022-04-14  585  		error = xfs_attr_leaf_removename(args);
f589c4f3a7a7d6 Dave Chinner      2022-04-14  586  		attr->xattri_dela_state = xfs_attr_complete_op(attr,
f589c4f3a7a7d6 Dave Chinner      2022-04-14  587  						xfs_attr_init_add_state(args));
f589c4f3a7a7d6 Dave Chinner      2022-04-14  588  		break;
b8d9a2124c0193 Dave Chinner      2022-04-14  589  	case XFS_DAS_NODE_REMOVE:
b8d9a2124c0193 Dave Chinner      2022-04-14  590  		error = xfs_attr_node_removename_setup(attr);
b8d9a2124c0193 Dave Chinner      2022-04-14  591  		if (error)
b8d9a2124c0193 Dave Chinner      2022-04-14  592  			return error;
b8d9a2124c0193 Dave Chinner      2022-04-14  593  		attr->xattri_dela_state = XFS_DAS_NODE_REMOVE_RMT;
b8d9a2124c0193 Dave Chinner      2022-04-14  594  		if (args->rmtblkno == 0)
b8d9a2124c0193 Dave Chinner      2022-04-14  595  			attr->xattri_dela_state++;
b8d9a2124c0193 Dave Chinner      2022-04-14  596  		break;
b8d9a2124c0193 Dave Chinner      2022-04-14  597
020dee1bf99e76 Dave Chinner      2022-04-14  598  	case XFS_DAS_LEAF_SET_RMT:
020dee1bf99e76 Dave Chinner      2022-04-14  599  	case XFS_DAS_NODE_SET_RMT:
37e7bb8434f8b2 Allison Henderson 2022-04-11  600  		error = xfs_attr_rmtval_find_space(attr);
83c6e70789ff37 Allison Henderson 2021-04-19  601  		if (error)
83c6e70789ff37 Allison Henderson 2021-04-19  602  			return error;
100ba63970eed9 Dave Chinner      2022-04-14  603  		attr->xattri_dela_state++;
f1fdd499537724 Dave Chinner      2022-04-14  604  		fallthrough;
020dee1bf99e76 Dave Chinner      2022-04-14  605
f1fdd499537724 Dave Chinner      2022-04-14  606  	case XFS_DAS_LEAF_ALLOC_RMT:
100ba63970eed9 Dave Chinner      2022-04-14  607  	case XFS_DAS_NODE_ALLOC_RMT:
020dee1bf99e76 Dave Chinner      2022-04-14  608  		error = xfs_attr_rmtval_alloc(attr);
8f502a4009822a Allison Henderson 2021-05-21  609  		if (error)
8f502a4009822a Allison Henderson 2021-05-21  610  			return error;
f027184d93cf76 Dave Chinner      2022-04-14  611  		/*
f027184d93cf76 Dave Chinner      2022-04-14  612  		 * If there is still more to allocate we need to roll the
f027184d93cf76 Dave Chinner      2022-04-14  613  		 * transaction so we have a full transaction reservation for
f027184d93cf76 Dave Chinner      2022-04-14  614  		 * the next allocation.
f027184d93cf76 Dave Chinner      2022-04-14  615  		 */
f027184d93cf76 Dave Chinner      2022-04-14  616  		if (attr->xattri_blkcnt > 0)
f027184d93cf76 Dave Chinner      2022-04-14  617  			break;
020dee1bf99e76 Dave Chinner      2022-04-14  618  		if (attr->xattri_dela_state == XFS_DAS_DONE)
020dee1bf99e76 Dave Chinner      2022-04-14  619  			break;
f027184d93cf76 Dave Chinner      2022-04-14  620
f027184d93cf76 Dave Chinner      2022-04-14  621  		goto next_state;
83c6e70789ff37 Allison Henderson 2021-04-19  622
020dee1bf99e76 Dave Chinner      2022-04-14  623  	case XFS_DAS_LEAF_REPLACE:
020dee1bf99e76 Dave Chinner      2022-04-14  624  	case XFS_DAS_NODE_REPLACE:
83c6e70789ff37 Allison Henderson 2021-04-19  625  		/*
f027184d93cf76 Dave Chinner      2022-04-14  626  		 * We must "flip" the incomplete flags on the "new" and "old"
f027184d93cf76 Dave Chinner      2022-04-14  627  		 * attribute/value pairs so that one disappears and one appears
6e971e92677394 Dave Chinner      2022-04-14  628  		 * atomically.
83c6e70789ff37 Allison Henderson 2021-04-19  629  		 */
83c6e70789ff37 Allison Henderson 2021-04-19  630  		error = xfs_attr3_leaf_flipflags(args);
83c6e70789ff37 Allison Henderson 2021-04-19  631  		if (error)
83c6e70789ff37 Allison Henderson 2021-04-19  632  			return error;
83c6e70789ff37 Allison Henderson 2021-04-19  633  		/*
6e971e92677394 Dave Chinner      2022-04-14  634  		 * We must commit the flag value change now to make it atomic
6e971e92677394 Dave Chinner      2022-04-14  635  		 * and then we can start the next trans in series at REMOVE_OLD.
83c6e70789ff37 Allison Henderson 2021-04-19  636  		 */
100ba63970eed9 Dave Chinner      2022-04-14  637  		attr->xattri_dela_state++;
020dee1bf99e76 Dave Chinner      2022-04-14  638  		break;
f2d5674061121e Allison Henderson 2022-04-11  639
f027184d93cf76 Dave Chinner      2022-04-14  640  	case XFS_DAS_LEAF_REMOVE_OLD:
f027184d93cf76 Dave Chinner      2022-04-14  641  	case XFS_DAS_NODE_REMOVE_OLD:
83c6e70789ff37 Allison Henderson 2021-04-19  642  		/*
6e971e92677394 Dave Chinner      2022-04-14  643  		 * If we have a remote attr, start the process of removing it
6e971e92677394 Dave Chinner      2022-04-14  644  		 * by invalidating any cached buffers.
6e971e92677394 Dave Chinner      2022-04-14  645  		 *
6e971e92677394 Dave Chinner      2022-04-14  646  		 * If we don't have a remote attr, we skip the remote block
6e971e92677394 Dave Chinner      2022-04-14  647  		 * removal state altogether with a second state increment.
83c6e70789ff37 Allison Henderson 2021-04-19  648  		 */
83c6e70789ff37 Allison Henderson 2021-04-19  649  		xfs_attr_restore_rmt_blk(args);
6e971e92677394 Dave Chinner      2022-04-14  650  		if (args->rmtblkno) {
83c6e70789ff37 Allison Henderson 2021-04-19  651  			error = xfs_attr_rmtval_invalidate(args);
83c6e70789ff37 Allison Henderson 2021-04-19  652  			if (error)
83c6e70789ff37 Allison Henderson 2021-04-19  653  				return error;
6e971e92677394 Dave Chinner      2022-04-14  654  		} else {
6e971e92677394 Dave Chinner      2022-04-14  655  			attr->xattri_dela_state++;
6e971e92677394 Dave Chinner      2022-04-14  656  		}
83c6e70789ff37 Allison Henderson 2021-04-19  657
100ba63970eed9 Dave Chinner      2022-04-14  658  		attr->xattri_dela_state++;
6e971e92677394 Dave Chinner      2022-04-14  659  		goto next_state;
6e971e92677394 Dave Chinner      2022-04-14  660
6e971e92677394 Dave Chinner      2022-04-14  661  	case XFS_DAS_LEAF_REMOVE_RMT:
6e971e92677394 Dave Chinner      2022-04-14  662  	case XFS_DAS_NODE_REMOVE_RMT:
37e7bb8434f8b2 Allison Henderson 2022-04-11  663  		error = xfs_attr_rmtval_remove(attr);
d56c93997e96ed Dave Chinner      2022-04-14  664  		if (error == -EAGAIN) {
d56c93997e96ed Dave Chinner      2022-04-14  665  			error = 0;
6e971e92677394 Dave Chinner      2022-04-14  666  			break;
d56c93997e96ed Dave Chinner      2022-04-14  667  		}
83c6e70789ff37 Allison Henderson 2021-04-19  668  		if (error)
83c6e70789ff37 Allison Henderson 2021-04-19  669  			return error;
8f502a4009822a Allison Henderson 2021-05-21  670
100ba63970eed9 Dave Chinner      2022-04-14  671  		/*
6e971e92677394 Dave Chinner      2022-04-14  672  		 * We've finished removing the remote attr blocks, so commit the
6e971e92677394 Dave Chinner      2022-04-14  673  		 * transaction and move on to removing the attr name from the
6e971e92677394 Dave Chinner      2022-04-14  674  		 * leaf/node block. Removing the attr might require a full
6e971e92677394 Dave Chinner      2022-04-14  675  		 * transaction reservation for btree block freeing, so we
6e971e92677394 Dave Chinner      2022-04-14  676  		 * can't do that in the same transaction where we removed the
6e971e92677394 Dave Chinner      2022-04-14  677  		 * remote attr blocks.
100ba63970eed9 Dave Chinner      2022-04-14  678  		 */
100ba63970eed9 Dave Chinner      2022-04-14  679  		attr->xattri_dela_state++;
6e971e92677394 Dave Chinner      2022-04-14  680  		break;
100ba63970eed9 Dave Chinner      2022-04-14  681
e683cdbb8baf82 Dave Chinner      2022-04-14  682  	case XFS_DAS_LEAF_REMOVE_ATTR:
e683cdbb8baf82 Dave Chinner      2022-04-14  683  		error = xfs_attr_leaf_remove_attr(attr);
f589c4f3a7a7d6 Dave Chinner      2022-04-14  684  		attr->xattri_dela_state = xfs_attr_complete_op(attr,
f589c4f3a7a7d6 Dave Chinner      2022-04-14  685  						xfs_attr_init_add_state(args));
e683cdbb8baf82 Dave Chinner      2022-04-14  686  		break;
5d954cc09f6bae Allison Henderson 2021-04-26  687
e683cdbb8baf82 Dave Chinner      2022-04-14  688  	case XFS_DAS_NODE_REMOVE_ATTR:
e683cdbb8baf82 Dave Chinner      2022-04-14  689  		error = xfs_attr_node_remove_attr(attr);
f589c4f3a7a7d6 Dave Chinner      2022-04-14  690  		attr->xattri_dela_state = xfs_attr_complete_op(attr,
f589c4f3a7a7d6 Dave Chinner      2022-04-14  691  						xfs_attr_init_add_state(args));
8f502a4009822a Allison Henderson 2021-05-21  692  		break;
8f502a4009822a Allison Henderson 2021-05-21  693  	default:
4a4957c16dc674 Allison Henderson 2021-05-21  694  		ASSERT(0);
8f502a4009822a Allison Henderson 2021-05-21  695  		break;
8f502a4009822a Allison Henderson 2021-05-21  696  	}
020dee1bf99e76 Dave Chinner      2022-04-14  697
020dee1bf99e76 Dave Chinner      2022-04-14  698  	trace_xfs_attr_set_iter_return(attr->xattri_dela_state, args->dp);
6ca5a4a1f52952 Allison Henderson 2021-04-12  699  	return error;
2f3cd809196381 Allison Henderson 2018-10-18  700  }
2f3cd809196381 Allison Henderson 2018-10-18  701

-- 
0-DAY CI Kernel Test Service
https://01.org/lkp

^ permalink raw reply	[flat|nested] 3+ messages in thread

* [allisonhenderson-xfs-work:xfs-5.19-compose_pptrs 25/32] fs/xfs/libxfs/xfs_attr.c:556:21: warning: Value stored to 'dp' during its initialization is never read [clang-analyzer-deadcode.DeadStores]
@ 2022-05-11  1:19 kernel test robot
  0 siblings, 0 replies; 3+ messages in thread
From: kernel test robot @ 2022-05-11  1:19 UTC (permalink / raw)
  To: kbuild

[-- Attachment #1: Type: text/plain, Size: 35906 bytes --]

CC: llvm(a)lists.linux.dev
CC: kbuild-all(a)lists.01.org
BCC: lkp(a)intel.com
CC: linux-kernel(a)vger.kernel.org
TO: Allison Henderson <allison.henderson@oracle.com>
CC: Dave Chinner <dchinner@redhat.com>

tree:   https://github.com/allisonhenderson/xfs_work.git xfs-5.19-compose_pptrs
head:   74ecccf0e89a132c2490f3a63661c535974c6a08
commit: 7a5d447970de2d3b003b9015e2bce3bf0d15e3db [25/32] xfs: parent pointer attribute creation
:::::: branch date: 5 days ago
:::::: commit date: 5 days ago
config: x86_64-randconfig-c007 (https://download.01.org/0day-ci/archive/20220511/202205110952.DfPq58IV-lkp(a)intel.com/config)
compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project 5e004fb787698440a387750db7f8028e7cb14cfc)
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/allisonhenderson/xfs_work/commit/7a5d447970de2d3b003b9015e2bce3bf0d15e3db
        git remote add allisonhenderson-xfs-work https://github.com/allisonhenderson/xfs_work.git
        git fetch --no-tags allisonhenderson-xfs-work xfs-5.19-compose_pptrs
        git checkout 7a5d447970de2d3b003b9015e2bce3bf0d15e3db
        # save the config file
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=x86_64 clang-analyzer 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>


clang-analyzer warnings: (new ones prefixed by >>)
                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/fortify-string.h:362:2: note: expanded from macro '__fortify_memcpy_chk'
           __underlying_##op(p, q, __fortify_size);                        \
           ^~~~~~~~~~~~~~~~~
   note: expanded from here
   include/linux/fortify-string.h:45:29: note: expanded from macro '__underlying_memcpy'
   #define __underlying_memcpy     __builtin_memcpy
                                   ^~~~~~~~~~~~~~~~
   fs/xfs/xfs_ioctl.c:1744:2: warning: Call to function 'memset' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memset_s' in case of C11 [clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
           memset(label, 0, sizeof(label));
           ^
   include/linux/fortify-string.h:272:25: note: expanded from macro 'memset'
   #define memset(p, c, s) __fortify_memset_chk(p, c, s,                   \
                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/fortify-string.h:265:2: note: expanded from macro '__fortify_memset_chk'
           __underlying_memset(p, c, __fortify_size);                      \
           ^~~~~~~~~~~~~~~~~~~
   include/linux/fortify-string.h:47:29: note: expanded from macro '__underlying_memset'
   #define __underlying_memset     __builtin_memset
                                   ^~~~~~~~~~~~~~~~
   fs/xfs/xfs_ioctl.c:1744:2: note: Call to function 'memset' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memset_s' in case of C11
           memset(label, 0, sizeof(label));
           ^
   include/linux/fortify-string.h:272:25: note: expanded from macro 'memset'
   #define memset(p, c, s) __fortify_memset_chk(p, c, s,                   \
                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/fortify-string.h:265:2: note: expanded from macro '__fortify_memset_chk'
           __underlying_memset(p, c, __fortify_size);                      \
           ^~~~~~~~~~~~~~~~~~~
   include/linux/fortify-string.h:47:29: note: expanded from macro '__underlying_memset'
   #define __underlying_memset     __builtin_memset
                                   ^~~~~~~~~~~~~~~~
   fs/xfs/xfs_ioctl.c:1746:2: warning: Call to function 'strncpy' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'strncpy_s' in case of C11 [clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
           strncpy(label, sbp->sb_fname, XFSLABEL_MAX);
           ^~~~~~~
   fs/xfs/xfs_ioctl.c:1746:2: note: Call to function 'strncpy' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'strncpy_s' in case of C11
           strncpy(label, sbp->sb_fname, XFSLABEL_MAX);
           ^~~~~~~
   fs/xfs/xfs_ioctl.c:1784:2: warning: Call to function 'memset' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memset_s' in case of C11 [clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
           memset(sbp->sb_fname, 0, sizeof(sbp->sb_fname));
           ^
   include/linux/fortify-string.h:272:25: note: expanded from macro 'memset'
   #define memset(p, c, s) __fortify_memset_chk(p, c, s,                   \
                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/fortify-string.h:265:2: note: expanded from macro '__fortify_memset_chk'
           __underlying_memset(p, c, __fortify_size);                      \
           ^~~~~~~~~~~~~~~~~~~
   include/linux/fortify-string.h:47:29: note: expanded from macro '__underlying_memset'
   #define __underlying_memset     __builtin_memset
                                   ^~~~~~~~~~~~~~~~
   fs/xfs/xfs_ioctl.c:1784:2: note: Call to function 'memset' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memset_s' in case of C11
           memset(sbp->sb_fname, 0, sizeof(sbp->sb_fname));
           ^
   include/linux/fortify-string.h:272:25: note: expanded from macro 'memset'
   #define memset(p, c, s) __fortify_memset_chk(p, c, s,                   \
                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/fortify-string.h:265:2: note: expanded from macro '__fortify_memset_chk'
           __underlying_memset(p, c, __fortify_size);                      \
           ^~~~~~~~~~~~~~~~~~~
   include/linux/fortify-string.h:47:29: note: expanded from macro '__underlying_memset'
   #define __underlying_memset     __builtin_memset
                                   ^~~~~~~~~~~~~~~~
   fs/xfs/xfs_ioctl.c:1785:2: warning: Call to function 'memcpy' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memcpy_s' in case of C11 [clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
           memcpy(sbp->sb_fname, label, len);
           ^
   include/linux/fortify-string.h:369:26: note: expanded from macro 'memcpy'
   #define memcpy(p, q, s)  __fortify_memcpy_chk(p, q, s,                  \
                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/fortify-string.h:362:2: note: expanded from macro '__fortify_memcpy_chk'
           __underlying_##op(p, q, __fortify_size);                        \
           ^~~~~~~~~~~~~~~~~
   note: expanded from here
   include/linux/fortify-string.h:45:29: note: expanded from macro '__underlying_memcpy'
   #define __underlying_memcpy     __builtin_memcpy
                                   ^~~~~~~~~~~~~~~~
   fs/xfs/xfs_ioctl.c:1785:2: note: Call to function 'memcpy' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memcpy_s' in case of C11
           memcpy(sbp->sb_fname, label, len);
           ^
   include/linux/fortify-string.h:369:26: note: expanded from macro 'memcpy'
   #define memcpy(p, q, s)  __fortify_memcpy_chk(p, q, s,                  \
                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/fortify-string.h:362:2: note: expanded from macro '__fortify_memcpy_chk'
           __underlying_##op(p, q, __fortify_size);                        \
           ^~~~~~~~~~~~~~~~~
   note: expanded from here
   include/linux/fortify-string.h:45:29: note: expanded from macro '__underlying_memcpy'
   #define __underlying_memcpy     __builtin_memcpy
                                   ^~~~~~~~~~~~~~~~
   Suppressed 46 warnings (46 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   46 warnings generated.
   Suppressed 46 warnings (46 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   57 warnings generated.
   fs/xfs/libxfs/xfs_attr.c:495:2: warning: Value stored to 'error' is never read [clang-analyzer-deadcode.DeadStores]
           error = 0;
           ^       ~
   fs/xfs/libxfs/xfs_attr.c:495:2: note: Value stored to 'error' is never read
           error = 0;
           ^       ~
>> fs/xfs/libxfs/xfs_attr.c:556:21: warning: Value stored to 'dp' during its initialization is never read [clang-analyzer-deadcode.DeadStores]
           struct xfs_inode                *dp = args->dp;
                                            ^~   ~~~~~~~~
   fs/xfs/libxfs/xfs_attr.c:556:21: note: Value stored to 'dp' during its initialization is never read
           struct xfs_inode                *dp = args->dp;
                                            ^~   ~~~~~~~~
>> fs/xfs/libxfs/xfs_attr.c:559:21: warning: Value stored to 'mp' during its initialization is never read [clang-analyzer-deadcode.DeadStores]
           struct xfs_mount                *mp = args->dp->i_mount;
                                            ^~   ~~~~~~~~~~~~~~~~~
   fs/xfs/libxfs/xfs_attr.c:559:21: note: Value stored to 'mp' during its initialization is never read
           struct xfs_mount                *mp = args->dp->i_mount;
                                            ^~   ~~~~~~~~~~~~~~~~~
   fs/xfs/libxfs/xfs_attr.c:1402:2: warning: Value stored to 'error' is never read [clang-analyzer-deadcode.DeadStores]
           error = xfs_attr_node_removename(args, state);
           ^       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   fs/xfs/libxfs/xfs_attr.c:1402:2: note: Value stored to 'error' is never read
           error = xfs_attr_node_removename(args, state);
           ^       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   Suppressed 53 warnings (47 in non-user code, 6 with check filters).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   83 warnings generated.
   fs/xfs/libxfs/xfs_attr_leaf.c:523:2: warning: Call to function 'memcpy' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memcpy_s' in case of C11 [clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
           memcpy(args->value, value, valuelen);
           ^
   include/linux/fortify-string.h:369:26: note: expanded from macro 'memcpy'
   #define memcpy(p, q, s)  __fortify_memcpy_chk(p, q, s,                  \
                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/fortify-string.h:362:2: note: expanded from macro '__fortify_memcpy_chk'
           __underlying_##op(p, q, __fortify_size);                        \
           ^~~~~~~~~~~~~~~~~
   note: expanded from here
   include/linux/fortify-string.h:45:29: note: expanded from macro '__underlying_memcpy'
   #define __underlying_memcpy     __builtin_memcpy
                                   ^~~~~~~~~~~~~~~~
   fs/xfs/libxfs/xfs_attr_leaf.c:523:2: note: Call to function 'memcpy' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memcpy_s' in case of C11
           memcpy(args->value, value, valuelen);
           ^
   include/linux/fortify-string.h:369:26: note: expanded from macro 'memcpy'
   #define memcpy(p, q, s)  __fortify_memcpy_chk(p, q, s,                  \
                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/fortify-string.h:362:2: note: expanded from macro '__fortify_memcpy_chk'
           __underlying_##op(p, q, __fortify_size);                        \
           ^~~~~~~~~~~~~~~~~
   note: expanded from here
   include/linux/fortify-string.h:45:29: note: expanded from macro '__underlying_memcpy'
   #define __underlying_memcpy     __builtin_memcpy
                                   ^~~~~~~~~~~~~~~~
   fs/xfs/libxfs/xfs_attr_leaf.c:678:2: warning: Call to function 'memset' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memset_s' in case of C11 [clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
           memset(hdr, 0, sizeof(*hdr));
           ^
   include/linux/fortify-string.h:272:25: note: expanded from macro 'memset'
   #define memset(p, c, s) __fortify_memset_chk(p, c, s,                   \
                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/fortify-string.h:265:2: note: expanded from macro '__fortify_memset_chk'
           __underlying_memset(p, c, __fortify_size);                      \
           ^~~~~~~~~~~~~~~~~~~
   include/linux/fortify-string.h:47:29: note: expanded from macro '__underlying_memset'
   #define __underlying_memset     __builtin_memset
                                   ^~~~~~~~~~~~~~~~
   fs/xfs/libxfs/xfs_attr_leaf.c:678:2: note: Call to function 'memset' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memset_s' in case of C11
           memset(hdr, 0, sizeof(*hdr));
           ^
   include/linux/fortify-string.h:272:25: note: expanded from macro 'memset'
   #define memset(p, c, s) __fortify_memset_chk(p, c, s,                   \
                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/fortify-string.h:265:2: note: expanded from macro '__fortify_memset_chk'
           __underlying_memset(p, c, __fortify_size);                      \
           ^~~~~~~~~~~~~~~~~~~
   include/linux/fortify-string.h:47:29: note: expanded from macro '__underlying_memset'
   #define __underlying_memset     __builtin_memset
                                   ^~~~~~~~~~~~~~~~
   fs/xfs/libxfs/xfs_attr_leaf.c:765:2: warning: Call to function 'memcpy' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memcpy_s' in case of C11 [clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
           memcpy(sfe->nameval, args->name, args->namelen);
           ^
   include/linux/fortify-string.h:369:26: note: expanded from macro 'memcpy'
   #define memcpy(p, q, s)  __fortify_memcpy_chk(p, q, s,                  \
                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/fortify-string.h:362:2: note: expanded from macro '__fortify_memcpy_chk'
           __underlying_##op(p, q, __fortify_size);                        \
           ^~~~~~~~~~~~~~~~~
   note: expanded from here
   include/linux/fortify-string.h:45:29: note: expanded from macro '__underlying_memcpy'
   #define __underlying_memcpy     __builtin_memcpy
                                   ^~~~~~~~~~~~~~~~
   fs/xfs/libxfs/xfs_attr_leaf.c:765:2: note: Call to function 'memcpy' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memcpy_s' in case of C11
           memcpy(sfe->nameval, args->name, args->namelen);
           ^
   include/linux/fortify-string.h:369:26: note: expanded from macro 'memcpy'
   #define memcpy(p, q, s)  __fortify_memcpy_chk(p, q, s,                  \
                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/fortify-string.h:362:2: note: expanded from macro '__fortify_memcpy_chk'
           __underlying_##op(p, q, __fortify_size);                        \
           ^~~~~~~~~~~~~~~~~
   note: expanded from here
   include/linux/fortify-string.h:45:29: note: expanded from macro '__underlying_memcpy'
   #define __underlying_memcpy     __builtin_memcpy
                                   ^~~~~~~~~~~~~~~~
   fs/xfs/libxfs/xfs_attr_leaf.c:766:2: warning: Call to function 'memcpy' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memcpy_s' in case of C11 [clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
           memcpy(&sfe->nameval[args->namelen], args->value, args->valuelen);
           ^
   include/linux/fortify-string.h:369:26: note: expanded from macro 'memcpy'
   #define memcpy(p, q, s)  __fortify_memcpy_chk(p, q, s,                  \
                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/fortify-string.h:362:2: note: expanded from macro '__fortify_memcpy_chk'
           __underlying_##op(p, q, __fortify_size);                        \
           ^~~~~~~~~~~~~~~~~
   note: expanded from here

vim +/dp +556 fs/xfs/libxfs/xfs_attr.c

b8d9a2124c0193 Dave Chinner      2022-04-14  478  
b8d9a2124c0193 Dave Chinner      2022-04-14  479  /*
b8d9a2124c0193 Dave Chinner      2022-04-14  480   * Initial setup for xfs_attr_node_removename.  Make sure the attr is there and
b8d9a2124c0193 Dave Chinner      2022-04-14  481   * the blocks are valid.  Attr keys with remote blocks will be marked
b8d9a2124c0193 Dave Chinner      2022-04-14  482   * incomplete.
b8d9a2124c0193 Dave Chinner      2022-04-14  483   */
b8d9a2124c0193 Dave Chinner      2022-04-14  484  static
b8d9a2124c0193 Dave Chinner      2022-04-14  485  int xfs_attr_node_removename_setup(
b8d9a2124c0193 Dave Chinner      2022-04-14  486  	struct xfs_attr_item		*attr)
b8d9a2124c0193 Dave Chinner      2022-04-14  487  {
b8d9a2124c0193 Dave Chinner      2022-04-14  488  	struct xfs_da_args		*args = attr->xattri_da_args;
b8d9a2124c0193 Dave Chinner      2022-04-14  489  	struct xfs_da_state		**state = &attr->xattri_da_state;
b8d9a2124c0193 Dave Chinner      2022-04-14  490  	int				error;
b8d9a2124c0193 Dave Chinner      2022-04-14  491  
b8d9a2124c0193 Dave Chinner      2022-04-14  492  	error = xfs_attr_node_hasname(args, state);
b8d9a2124c0193 Dave Chinner      2022-04-14  493  	if (error != -EEXIST)
b8d9a2124c0193 Dave Chinner      2022-04-14  494  		goto out;
b8d9a2124c0193 Dave Chinner      2022-04-14 @495  	error = 0;
b8d9a2124c0193 Dave Chinner      2022-04-14  496  
b8d9a2124c0193 Dave Chinner      2022-04-14  497  	ASSERT((*state)->path.blk[(*state)->path.active - 1].bp != NULL);
b8d9a2124c0193 Dave Chinner      2022-04-14  498  	ASSERT((*state)->path.blk[(*state)->path.active - 1].magic ==
b8d9a2124c0193 Dave Chinner      2022-04-14  499  		XFS_ATTR_LEAF_MAGIC);
b8d9a2124c0193 Dave Chinner      2022-04-14  500  
b8d9a2124c0193 Dave Chinner      2022-04-14  501  	error = xfs_attr_leaf_mark_incomplete(args, *state);
b8d9a2124c0193 Dave Chinner      2022-04-14  502  	if (error)
b8d9a2124c0193 Dave Chinner      2022-04-14  503  		goto out;
26b33e76e2c392 Dave Chinner      2022-04-14  504  	if (args->rmtblkno > 0)
b8d9a2124c0193 Dave Chinner      2022-04-14  505  		error = xfs_attr_rmtval_invalidate(args);
b8d9a2124c0193 Dave Chinner      2022-04-14  506  out:
b8d9a2124c0193 Dave Chinner      2022-04-14  507  	if (error)
b8d9a2124c0193 Dave Chinner      2022-04-14  508  		xfs_da_state_free(*state);
b8d9a2124c0193 Dave Chinner      2022-04-14  509  
b8d9a2124c0193 Dave Chinner      2022-04-14  510  	return error;
b8d9a2124c0193 Dave Chinner      2022-04-14  511  }
b8d9a2124c0193 Dave Chinner      2022-04-14  512  
e683cdbb8baf82 Dave Chinner      2022-04-14  513  /*
e683cdbb8baf82 Dave Chinner      2022-04-14  514   * Remove the original attr we have just replaced. This is dependent on the
e683cdbb8baf82 Dave Chinner      2022-04-14  515   * original lookup and insert placing the old attr in args->blkno/args->index
e683cdbb8baf82 Dave Chinner      2022-04-14  516   * and the new attr in args->blkno2/args->index2.
e683cdbb8baf82 Dave Chinner      2022-04-14  517   */
e683cdbb8baf82 Dave Chinner      2022-04-14  518  static int
e683cdbb8baf82 Dave Chinner      2022-04-14  519  xfs_attr_leaf_remove_attr(
e683cdbb8baf82 Dave Chinner      2022-04-14  520  	struct xfs_attr_item		*attr)
e683cdbb8baf82 Dave Chinner      2022-04-14  521  {
e683cdbb8baf82 Dave Chinner      2022-04-14  522  	struct xfs_da_args              *args = attr->xattri_da_args;
e683cdbb8baf82 Dave Chinner      2022-04-14  523  	struct xfs_inode		*dp = args->dp;
e683cdbb8baf82 Dave Chinner      2022-04-14  524  	struct xfs_buf			*bp = NULL;
e683cdbb8baf82 Dave Chinner      2022-04-14  525  	int				forkoff;
e683cdbb8baf82 Dave Chinner      2022-04-14  526  	int				error;
e683cdbb8baf82 Dave Chinner      2022-04-14  527  
e683cdbb8baf82 Dave Chinner      2022-04-14  528  	error = xfs_attr3_leaf_read(args->trans, args->dp, args->blkno,
e683cdbb8baf82 Dave Chinner      2022-04-14  529  				   &bp);
e683cdbb8baf82 Dave Chinner      2022-04-14  530  	if (error)
e683cdbb8baf82 Dave Chinner      2022-04-14  531  		return error;
e683cdbb8baf82 Dave Chinner      2022-04-14  532  
e683cdbb8baf82 Dave Chinner      2022-04-14  533  	xfs_attr3_leaf_remove(bp, args);
e683cdbb8baf82 Dave Chinner      2022-04-14  534  
e683cdbb8baf82 Dave Chinner      2022-04-14  535  	forkoff = xfs_attr_shortform_allfit(bp, dp);
e683cdbb8baf82 Dave Chinner      2022-04-14  536  	if (forkoff)
e683cdbb8baf82 Dave Chinner      2022-04-14  537  		error = xfs_attr3_leaf_to_shortform(bp, args, forkoff);
e683cdbb8baf82 Dave Chinner      2022-04-14  538  		/* bp is gone due to xfs_da_shrink_inode */
e683cdbb8baf82 Dave Chinner      2022-04-14  539  
e683cdbb8baf82 Dave Chinner      2022-04-14  540  	return error;
e683cdbb8baf82 Dave Chinner      2022-04-14  541  }
e683cdbb8baf82 Dave Chinner      2022-04-14  542  
db1a28cc591c1a Allison Collins   2020-07-20  543  /*
d56c93997e96ed Dave Chinner      2022-04-14  544   * Run the attribute operation specified in @attr.
d56c93997e96ed Dave Chinner      2022-04-14  545   *
d56c93997e96ed Dave Chinner      2022-04-14  546   * This routine is meant to function as a delayed operation and will set the
d56c93997e96ed Dave Chinner      2022-04-14  547   * state to XFS_DAS_DONE when the operation is complete.  Calling functions will
d56c93997e96ed Dave Chinner      2022-04-14  548   * need to handle this, and recall the function until either an error or
d56c93997e96ed Dave Chinner      2022-04-14  549   * XFS_DAS_DONE is detected.
db1a28cc591c1a Allison Collins   2020-07-20  550   */
db1a28cc591c1a Allison Collins   2020-07-20  551  int
8f502a4009822a Allison Henderson 2021-05-21  552  xfs_attr_set_iter(
133b4f4350cc51 Allison Henderson 2022-04-11  553  	struct xfs_attr_item		*attr)
db1a28cc591c1a Allison Collins   2020-07-20  554  {
133b4f4350cc51 Allison Henderson 2022-04-11  555  	struct xfs_da_args              *args = attr->xattri_da_args;
7a5d447970de2d Allison Henderson 2022-03-22 @556  	struct xfs_inode		*dp = args->dp;
7a5d447970de2d Allison Henderson 2022-03-22  557  	struct xfs_buf			*bp = NULL;
7a5d447970de2d Allison Henderson 2022-03-22  558  	int				sf_size, forkoff, error = 0;
7a5d447970de2d Allison Henderson 2022-03-22 @559  	struct xfs_mount		*mp = args->dp->i_mount;
7a5d447970de2d Allison Henderson 2022-03-22  560  
db1a28cc591c1a Allison Collins   2020-07-20  561  
8f502a4009822a Allison Henderson 2021-05-21  562  	/* State machine switch */
100ba63970eed9 Dave Chinner      2022-04-14  563  next_state:
133b4f4350cc51 Allison Henderson 2022-04-11  564  	switch (attr->xattri_dela_state) {
8f502a4009822a Allison Henderson 2021-05-21  565  	case XFS_DAS_UNINIT:
7a5d447970de2d Allison Henderson 2022-03-22  566  		sf_size = sizeof(struct xfs_attr_sf_hdr) +
7a5d447970de2d Allison Henderson 2022-03-22  567  			  xfs_attr_sf_entsize_byname(args->namelen,
7a5d447970de2d Allison Henderson 2022-03-22  568  							     args->valuelen);
7a5d447970de2d Allison Henderson 2022-03-22  569  		xfs_bmap_set_attrforkoff(args->dp, sf_size, NULL);
7a5d447970de2d Allison Henderson 2022-03-22  570  		args->dp->i_afp = kmem_cache_zalloc(xfs_ifork_cache, 0);
7a5d447970de2d Allison Henderson 2022-03-22  571  		args->dp->i_afp->if_format = XFS_DINODE_FMT_EXTENTS;
5a7bf541843b13 Dave Chinner      2022-04-14  572  	case XFS_DAS_SF_ADD:
133b4f4350cc51 Allison Henderson 2022-04-11  573  		return xfs_attr_sf_addname(attr);
5a7bf541843b13 Dave Chinner      2022-04-14  574  	case XFS_DAS_LEAF_ADD:
133b4f4350cc51 Allison Henderson 2022-04-11  575  		return xfs_attr_leaf_addname(attr);
5a7bf541843b13 Dave Chinner      2022-04-14  576  	case XFS_DAS_NODE_ADD:
5a7bf541843b13 Dave Chinner      2022-04-14  577  		return xfs_attr_node_addname(attr);
3f562d092bb1ed Allison Henderson 2021-02-12  578  
b8d9a2124c0193 Dave Chinner      2022-04-14  579  	case XFS_DAS_SF_REMOVE:
f589c4f3a7a7d6 Dave Chinner      2022-04-14  580  		error = xfs_attr_sf_removename(args);
f589c4f3a7a7d6 Dave Chinner      2022-04-14  581  		attr->xattri_dela_state = xfs_attr_complete_op(attr,
f589c4f3a7a7d6 Dave Chinner      2022-04-14  582  						xfs_attr_init_add_state(args));
f589c4f3a7a7d6 Dave Chinner      2022-04-14  583  		break;
b8d9a2124c0193 Dave Chinner      2022-04-14  584  	case XFS_DAS_LEAF_REMOVE:
f589c4f3a7a7d6 Dave Chinner      2022-04-14  585  		error = xfs_attr_leaf_removename(args);
f589c4f3a7a7d6 Dave Chinner      2022-04-14  586  		attr->xattri_dela_state = xfs_attr_complete_op(attr,
f589c4f3a7a7d6 Dave Chinner      2022-04-14  587  						xfs_attr_init_add_state(args));
f589c4f3a7a7d6 Dave Chinner      2022-04-14  588  		break;
b8d9a2124c0193 Dave Chinner      2022-04-14  589  	case XFS_DAS_NODE_REMOVE:
b8d9a2124c0193 Dave Chinner      2022-04-14  590  		error = xfs_attr_node_removename_setup(attr);
b8d9a2124c0193 Dave Chinner      2022-04-14  591  		if (error)
b8d9a2124c0193 Dave Chinner      2022-04-14  592  			return error;
b8d9a2124c0193 Dave Chinner      2022-04-14  593  		attr->xattri_dela_state = XFS_DAS_NODE_REMOVE_RMT;
b8d9a2124c0193 Dave Chinner      2022-04-14  594  		if (args->rmtblkno == 0)
b8d9a2124c0193 Dave Chinner      2022-04-14  595  			attr->xattri_dela_state++;
b8d9a2124c0193 Dave Chinner      2022-04-14  596  		break;
b8d9a2124c0193 Dave Chinner      2022-04-14  597  
020dee1bf99e76 Dave Chinner      2022-04-14  598  	case XFS_DAS_LEAF_SET_RMT:
020dee1bf99e76 Dave Chinner      2022-04-14  599  	case XFS_DAS_NODE_SET_RMT:
37e7bb8434f8b2 Allison Henderson 2022-04-11  600  		error = xfs_attr_rmtval_find_space(attr);
83c6e70789ff37 Allison Henderson 2021-04-19  601  		if (error)
83c6e70789ff37 Allison Henderson 2021-04-19  602  			return error;
100ba63970eed9 Dave Chinner      2022-04-14  603  		attr->xattri_dela_state++;
f1fdd499537724 Dave Chinner      2022-04-14  604  		fallthrough;
020dee1bf99e76 Dave Chinner      2022-04-14  605  
f1fdd499537724 Dave Chinner      2022-04-14  606  	case XFS_DAS_LEAF_ALLOC_RMT:
100ba63970eed9 Dave Chinner      2022-04-14  607  	case XFS_DAS_NODE_ALLOC_RMT:
020dee1bf99e76 Dave Chinner      2022-04-14  608  		error = xfs_attr_rmtval_alloc(attr);
8f502a4009822a Allison Henderson 2021-05-21  609  		if (error)
8f502a4009822a Allison Henderson 2021-05-21  610  			return error;
f027184d93cf76 Dave Chinner      2022-04-14  611  		/*
f027184d93cf76 Dave Chinner      2022-04-14  612  		 * If there is still more to allocate we need to roll the
f027184d93cf76 Dave Chinner      2022-04-14  613  		 * transaction so we have a full transaction reservation for
f027184d93cf76 Dave Chinner      2022-04-14  614  		 * the next allocation.
f027184d93cf76 Dave Chinner      2022-04-14  615  		 */
f027184d93cf76 Dave Chinner      2022-04-14  616  		if (attr->xattri_blkcnt > 0)
f027184d93cf76 Dave Chinner      2022-04-14  617  			break;
020dee1bf99e76 Dave Chinner      2022-04-14  618  		if (attr->xattri_dela_state == XFS_DAS_DONE)
020dee1bf99e76 Dave Chinner      2022-04-14  619  			break;
f027184d93cf76 Dave Chinner      2022-04-14  620  
f027184d93cf76 Dave Chinner      2022-04-14  621  		goto next_state;
83c6e70789ff37 Allison Henderson 2021-04-19  622  
020dee1bf99e76 Dave Chinner      2022-04-14  623  	case XFS_DAS_LEAF_REPLACE:
020dee1bf99e76 Dave Chinner      2022-04-14  624  	case XFS_DAS_NODE_REPLACE:
83c6e70789ff37 Allison Henderson 2021-04-19  625  		/*
f027184d93cf76 Dave Chinner      2022-04-14  626  		 * We must "flip" the incomplete flags on the "new" and "old"
f027184d93cf76 Dave Chinner      2022-04-14  627  		 * attribute/value pairs so that one disappears and one appears
6e971e92677394 Dave Chinner      2022-04-14  628  		 * atomically.
83c6e70789ff37 Allison Henderson 2021-04-19  629  		 */
83c6e70789ff37 Allison Henderson 2021-04-19  630  		error = xfs_attr3_leaf_flipflags(args);
83c6e70789ff37 Allison Henderson 2021-04-19  631  		if (error)
83c6e70789ff37 Allison Henderson 2021-04-19  632  			return error;
83c6e70789ff37 Allison Henderson 2021-04-19  633  		/*
6e971e92677394 Dave Chinner      2022-04-14  634  		 * We must commit the flag value change now to make it atomic
6e971e92677394 Dave Chinner      2022-04-14  635  		 * and then we can start the next trans in series at REMOVE_OLD.
83c6e70789ff37 Allison Henderson 2021-04-19  636  		 */
100ba63970eed9 Dave Chinner      2022-04-14  637  		attr->xattri_dela_state++;
020dee1bf99e76 Dave Chinner      2022-04-14  638  		break;
f2d5674061121e Allison Henderson 2022-04-11  639  
f027184d93cf76 Dave Chinner      2022-04-14  640  	case XFS_DAS_LEAF_REMOVE_OLD:
f027184d93cf76 Dave Chinner      2022-04-14  641  	case XFS_DAS_NODE_REMOVE_OLD:
83c6e70789ff37 Allison Henderson 2021-04-19  642  		/*
6e971e92677394 Dave Chinner      2022-04-14  643  		 * If we have a remote attr, start the process of removing it
6e971e92677394 Dave Chinner      2022-04-14  644  		 * by invalidating any cached buffers.
6e971e92677394 Dave Chinner      2022-04-14  645  		 *
6e971e92677394 Dave Chinner      2022-04-14  646  		 * If we don't have a remote attr, we skip the remote block
6e971e92677394 Dave Chinner      2022-04-14  647  		 * removal state altogether with a second state increment.
83c6e70789ff37 Allison Henderson 2021-04-19  648  		 */
83c6e70789ff37 Allison Henderson 2021-04-19  649  		xfs_attr_restore_rmt_blk(args);
6e971e92677394 Dave Chinner      2022-04-14  650  		if (args->rmtblkno) {
83c6e70789ff37 Allison Henderson 2021-04-19  651  			error = xfs_attr_rmtval_invalidate(args);
83c6e70789ff37 Allison Henderson 2021-04-19  652  			if (error)
83c6e70789ff37 Allison Henderson 2021-04-19  653  				return error;
6e971e92677394 Dave Chinner      2022-04-14  654  		} else {
6e971e92677394 Dave Chinner      2022-04-14  655  			attr->xattri_dela_state++;
6e971e92677394 Dave Chinner      2022-04-14  656  		}
83c6e70789ff37 Allison Henderson 2021-04-19  657  
100ba63970eed9 Dave Chinner      2022-04-14  658  		attr->xattri_dela_state++;
6e971e92677394 Dave Chinner      2022-04-14  659  		goto next_state;
6e971e92677394 Dave Chinner      2022-04-14  660  
6e971e92677394 Dave Chinner      2022-04-14  661  	case XFS_DAS_LEAF_REMOVE_RMT:
6e971e92677394 Dave Chinner      2022-04-14  662  	case XFS_DAS_NODE_REMOVE_RMT:
37e7bb8434f8b2 Allison Henderson 2022-04-11  663  		error = xfs_attr_rmtval_remove(attr);
d56c93997e96ed Dave Chinner      2022-04-14  664  		if (error == -EAGAIN) {
d56c93997e96ed Dave Chinner      2022-04-14  665  			error = 0;
6e971e92677394 Dave Chinner      2022-04-14  666  			break;
d56c93997e96ed Dave Chinner      2022-04-14  667  		}
83c6e70789ff37 Allison Henderson 2021-04-19  668  		if (error)
83c6e70789ff37 Allison Henderson 2021-04-19  669  			return error;
8f502a4009822a Allison Henderson 2021-05-21  670  
100ba63970eed9 Dave Chinner      2022-04-14  671  		/*
6e971e92677394 Dave Chinner      2022-04-14  672  		 * We've finished removing the remote attr blocks, so commit the
6e971e92677394 Dave Chinner      2022-04-14  673  		 * transaction and move on to removing the attr name from the
6e971e92677394 Dave Chinner      2022-04-14  674  		 * leaf/node block. Removing the attr might require a full
6e971e92677394 Dave Chinner      2022-04-14  675  		 * transaction reservation for btree block freeing, so we
6e971e92677394 Dave Chinner      2022-04-14  676  		 * can't do that in the same transaction where we removed the
6e971e92677394 Dave Chinner      2022-04-14  677  		 * remote attr blocks.
100ba63970eed9 Dave Chinner      2022-04-14  678  		 */
100ba63970eed9 Dave Chinner      2022-04-14  679  		attr->xattri_dela_state++;
6e971e92677394 Dave Chinner      2022-04-14  680  		break;
100ba63970eed9 Dave Chinner      2022-04-14  681  
e683cdbb8baf82 Dave Chinner      2022-04-14  682  	case XFS_DAS_LEAF_REMOVE_ATTR:
e683cdbb8baf82 Dave Chinner      2022-04-14  683  		error = xfs_attr_leaf_remove_attr(attr);
f589c4f3a7a7d6 Dave Chinner      2022-04-14  684  		attr->xattri_dela_state = xfs_attr_complete_op(attr,
f589c4f3a7a7d6 Dave Chinner      2022-04-14  685  						xfs_attr_init_add_state(args));
e683cdbb8baf82 Dave Chinner      2022-04-14  686  		break;
5d954cc09f6bae Allison Henderson 2021-04-26  687  
e683cdbb8baf82 Dave Chinner      2022-04-14  688  	case XFS_DAS_NODE_REMOVE_ATTR:
e683cdbb8baf82 Dave Chinner      2022-04-14  689  		error = xfs_attr_node_remove_attr(attr);
f589c4f3a7a7d6 Dave Chinner      2022-04-14  690  		attr->xattri_dela_state = xfs_attr_complete_op(attr,
f589c4f3a7a7d6 Dave Chinner      2022-04-14  691  						xfs_attr_init_add_state(args));
8f502a4009822a Allison Henderson 2021-05-21  692  		break;
8f502a4009822a Allison Henderson 2021-05-21  693  	default:
4a4957c16dc674 Allison Henderson 2021-05-21  694  		ASSERT(0);
8f502a4009822a Allison Henderson 2021-05-21  695  		break;
8f502a4009822a Allison Henderson 2021-05-21  696  	}
020dee1bf99e76 Dave Chinner      2022-04-14  697  
020dee1bf99e76 Dave Chinner      2022-04-14  698  	trace_xfs_attr_set_iter_return(attr->xattri_dela_state, args->dp);
6ca5a4a1f52952 Allison Henderson 2021-04-12  699  	return error;
2f3cd809196381 Allison Henderson 2018-10-18  700  }
2f3cd809196381 Allison Henderson 2018-10-18  701  

-- 
0-DAY CI Kernel Test Service
https://01.org/lkp

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2022-05-11  1:19 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-05-08 11:50 [allisonhenderson-xfs-work:xfs-5.19-compose_pptrs 25/32] fs/xfs/libxfs/xfs_attr.c:556:21: warning: Value stored to 'dp' during its initialization is never read [clang-analyzer-deadcode.DeadStores] kernel test robot
2022-05-09  3:16 ` kernel test robot
2022-05-11  1:19 kernel test robot

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.