All of lore.kernel.org
 help / color / mirror / Atom feed
* fs/btrfs/ctree.h:3525:34: warning: dereference of NULL 'trans' [CWE-476]
@ 2022-06-12 13:29 kernel test robot
  0 siblings, 0 replies; 2+ messages in thread
From: kernel test robot @ 2022-06-12 13:29 UTC (permalink / raw)
  To: kbuild

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

:::::: 
:::::: Manual check reason: "low confidence bisect report"
:::::: Manual check reason: "low confidence static check first_new_problem: fs/btrfs/ctree.h:3525:34: warning: dereference of NULL 'trans' [CWE-476] [-Wanalyzer-null-dereference]"
:::::: 

CC: kbuild-all(a)lists.01.org
BCC: lkp(a)intel.com
CC: linux-kernel(a)vger.kernel.org
TO: Filipe Manana <fdmanana@suse.com>
CC: David Sterba <dsterba@suse.com>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   7a68065eb9cd194cf03f135c9211eeb2d5c4c0a0
commit: 79bd37120b149532af5b21953643ed74af69654f btrfs: rework chunk allocation to avoid exhaustion of the system chunk array
date:   11 months ago
:::::: branch date: 14 hours ago
:::::: commit date: 11 months ago
config: arm-randconfig-c002-20220611 (https://download.01.org/0day-ci/archive/20220612/202206122128.AtyCG5YP-lkp(a)intel.com/config)
compiler: arm-linux-gnueabi-gcc (GCC) 11.3.0
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://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=79bd37120b149532af5b21953643ed74af69654f
        git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
        git fetch --no-tags linus master
        git checkout 79bd37120b149532af5b21953643ed74af69654f
        # save the config file
         ARCH=arm KBUILD_USERCFLAGS='-fanalyzer -Wno-error' 

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


gcc-analyzer warnings: (new ones prefixed by >>)
                                   |      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                                   |      |         |
                                   |      |         (67) ...to here
                                   |......
                                   | 2560 |         if (ret) {
                                   |      |            ~           
                                   |      |            |
                                   |      |            (68) following 'false' branch (when 'ret == 0')...
                                   |
                                 'split_node': event 69
                                   |
                                   |fs/btrfs/ctree.h:1925:46:
                                   | 1925 |                 sizeof(struct btrfs_key_ptr) * nr;
                                   |      |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~
                                   |      |                                              |
                                   |      |                                              (69) ...to here
                                   |
                                 'split_node': event 70
                                   |
                                   |fs/btrfs/ctree.c:2574:9:
                                   | 2574 |         insert_ptr(trans, path, &disk_key, split->start,
                                   |      |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                                   |      |         |
                                   |      |         (70) calling 'insert_ptr' from 'split_node'
                                   | 2575 |                    path->slots[level + 1] + 1, level + 1);
                                   |      |                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                                   |
                                   +--> 'insert_ptr': event 71
                                          |
                                          | 2460 | static void insert_ptr(struct btrfs_trans_handle *trans,
                                          |      |             ^~~~~~~~~~
                                          |      |             |
                                          |      |             (71) entry to 'insert_ptr'
                                          |
                                        'insert_ptr': event 72
                                          |
                                          |include/asm-generic/bug.h:183:35:
                                          |  183 | #define BUG_ON(condition) do { if (unlikely(condition)) BUG(); } while (0)
                                          |      |                                   ^
                                          |      |                                   |
                                          |      |                                   (72) following 'false' branch...
   fs/btrfs/ctree.c:2469:9: note: in expansion of macro 'BUG_ON'
                                          | 2469 |         BUG_ON(!path->nodes[level]);
                                          |      |         ^~~~~~
                                          |
                                        'insert_ptr': event 73
                                          |
                                          | 2472 |         nritems = btrfs_header_nritems(lower);
                                          |      |                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~
                                          |      |                   |
                                          |      |                   (73) ...to here
                                          |
                                        'insert_ptr': event 74
                                          |
                                          |include/asm-generic/bug.h:183:35:
                                          |  183 | #define BUG_ON(condition) do { if (unlikely(condition)) BUG(); } while (0)
                                          |      |                                   ^
                                          |      |                                   |
                                          |      |                                   (74) following 'false' branch...
   fs/btrfs/ctree.c:2473:9: note: in expansion of macro 'BUG_ON'
                                          | 2473 |         BUG_ON(slot > nritems);
                                          |      |         ^~~~~~
                                          |
                                        'insert_ptr': event 75
                                          |
                                          | 2474 |         BUG_ON(nritems == BTRFS_NODEPTRS_PER_BLOCK(trans->fs_info));
                                          |      |                                                    ~~~~~^~~~~~~~~
                                          |      |                                                         |
                                          |      |                                                         (75) ...to here
   include/linux/compiler.h:78:45: note: in definition of macro 'unlikely'
                                          |   78 | # define unlikely(x)    __builtin_expect(!!(x), 0)
                                          |      |                                             ^
   fs/btrfs/ctree.c:2474:9: note: in expansion of macro 'BUG_ON'
                                          | 2474 |         BUG_ON(nritems == BTRFS_NODEPTRS_PER_BLOCK(trans->fs_info));
                                          |      |         ^~~~~~
                                          |
                                        'insert_ptr': event 76
                                          |
                                          | 2474 |         BUG_ON(nritems == BTRFS_NODEPTRS_PER_BLOCK(trans->fs_info));
                                          |      |                                                    ~~~~~^~~~~~~~~
                                          |      |                                                         |
                                          |      |                                                         (76) dereference of NULL 'trans'
   include/linux/compiler.h:78:45: note: in definition of macro 'unlikely'
                                          |   78 | # define unlikely(x)    __builtin_expect(!!(x), 0)
                                          |      |                                             ^
   fs/btrfs/ctree.c:2474:9: note: in expansion of macro 'BUG_ON'
                                          | 2474 |         BUG_ON(nritems == BTRFS_NODEPTRS_PER_BLOCK(trans->fs_info));
                                          |      |         ^~~~~~
                                          |
   In file included from include/linux/bitops.h:32,
                    from include/linux/kernel.h:12,
                    from include/asm-generic/bug.h:20,
                    from arch/arm/include/asm/bug.h:60,
                    from include/linux/bug.h:5,
                    from include/linux/thread_info.h:12,
                    from include/asm-generic/current.h:5,
                    from ./arch/arm/include/generated/asm/current.h:1,
                    from include/linux/sched.h:12,
                    from fs/btrfs/ctree.c:6:
   fs/btrfs/ctree.c: In function 'split_node':
>> fs/btrfs/ctree.h:3525:34: warning: dereference of NULL 'trans' [CWE-476] [-Wanalyzer-null-dereference]
    3525 |                         &((trans)->fs_info->fs_state))) {       \
         |                           ~~~~~~~^~~~~~~~~
   arch/arm/include/asm/bitops.h:181:59: note: in definition of macro 'ATOMIC_BITOP'
     181 |         (__builtin_constant_p(nr) ? ____atomic_##name(nr, p) : _##name(nr,p))
         |                                                           ^
   fs/btrfs/ctree.h:3524:14: note: in expansion of macro 'test_and_set_bit'
    3524 |         if (!test_and_set_bit(BTRFS_FS_STATE_TRANS_ABORTED,     \
         |              ^~~~~~~~~~~~~~~~
   fs/btrfs/ctree.c:2561:17: note: in expansion of macro 'btrfs_abort_transaction'
    2561 |                 btrfs_abort_transaction(trans, ret);
         |                 ^~~~~~~~~~~~~~~~~~~~~~~
     'btrfs_previous_extent_item': events 1-4
       |
       | 4577 | int btrfs_previous_extent_item(struct btrfs_root *root,
       |      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~
       |      |     |
       |      |     (1) entry to 'btrfs_previous_extent_item'
       |......
       | 4586 |                 if (path->slots[0] == 0) {
       |      |                    ~
       |      |                    |
       |      |                    (2) following 'true' branch...
       | 4587 |                         ret = btrfs_prev_leaf(root, path);
       |      |                               ~~~~~~~~~~~~~~~~~~~~~~~~~~~
       |      |                               |
       |      |                               (3) ...to here
       |      |                               (4) calling 'btrfs_prev_leaf' from 'btrfs_previous_extent_item'
       |
       +--> 'btrfs_prev_leaf': events 5-6
              |
              | 4121 | int btrfs_prev_leaf(struct btrfs_root *root, struct btrfs_path *path)
              |      |     ^~~~~~~~~~~~~~~
              |      |     |
              |      |     (5) entry to 'btrfs_prev_leaf'
              |......
              | 4142 |         btrfs_release_path(path);
              |      |         ~~~~~~~~~~~~~~~~~~~~~~~~
              |      |         |
              |      |         (6) calling 'btrfs_release_path' from 'btrfs_prev_leaf'
              |
              +--> 'btrfs_release_path': event 7
                     |
                     |   97 | noinline void btrfs_release_path(struct btrfs_path *p)
                     |      |               ^~~~~~~~~~~~~~~~~~
                     |      |               |
                     |      |               (7) entry to 'btrfs_release_path'
                     |
                   'btrfs_release_path': events 8-9
                     |
                     |  101 |         for (i = 0; i < BTRFS_MAX_LEVEL; i++) {
                     |  102 |                 p->slots[i] = 0;
                     |      |                 ~~~~~~~~~~~~~~~
                     |      |                             |
                     |      |                             (9) ...to here
                     |
              <------+
              |
            'btrfs_prev_leaf': events 10-11
              |
              | 4142 |         btrfs_release_path(path);
              |      |         ^~~~~~~~~~~~~~~~~~~~~~~~
              |      |         |
              |      |         (10) returning to 'btrfs_prev_leaf' from 'btrfs_release_path'
              | 4143 |         ret = btrfs_search_slot(NULL, root, &key, path, 0, 0);
              |      |               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
              |      |               |
              |      |               (11) calling 'btrfs_search_slot' from 'btrfs_prev_leaf'
              |
              +--> 'btrfs_search_slot': event 12
                     |
                     | 1682 | int btrfs_search_slot(struct btrfs_trans_handle *trans, struct btrfs_root *root,
                     |      |     ^~~~~~~~~~~~~~~~~
                     |      |     |
                     |      |     (12) entry to 'btrfs_search_slot'
                     |
                   'btrfs_search_slot': event 13
                     |
                     |include/asm-generic/bug.h:183:35:
                     |  183 | #define BUG_ON(condition) do { if (unlikely(condition)) BUG(); } while (0)
                     |      |                                   ^
                     |      |                                   |
                     |      |                                   (13) following 'true' branch...
   fs/btrfs/ctree.c:1701:9: note: in expansion of macro 'BUG_ON'
                     | 1701 |         BUG_ON(!cow && ins_len);
                     |      |         ^~~~~~
                     |
                   'btrfs_search_slot': event 14
                     |
                     | 1701 |         BUG_ON(!cow && ins_len);
                     |      |                     ^~
                     |      |                     |
                     |      |                     (14) ...to here
   include/linux/compiler.h:78:45: note: in definition of macro 'unlikely'
                     |   78 | # define unlikely(x)    __builtin_expect(!!(x), 0)
                     |      |                                             ^
   fs/btrfs/ctree.c:1701:9: note: in expansion of macro 'BUG_ON'
                     | 1701 |         BUG_ON(!cow && ins_len);
                     |      |         ^~~~~~
                     |
                   'btrfs_search_slot': event 15

vim +/trans +3525 fs/btrfs/ctree.h

533574c6bc30cf Joe Perches  2012-07-30  3511  
c0d19e2b9a521b David Sterba 2015-04-24  3512  __cold
49b25e0540904b Jeff Mahoney 2012-03-01  3513  void __btrfs_abort_transaction(struct btrfs_trans_handle *trans,
66642832f06a43 Jeff Mahoney 2016-06-10  3514  			       const char *function,
acce952b026382 liubo        2011-01-06  3515  			       unsigned int line, int errno);
acce952b026382 liubo        2011-01-06  3516  
c5f4ccb2f77355 Anand Jain   2016-03-16  3517  /*
c5f4ccb2f77355 Anand Jain   2016-03-16  3518   * Call btrfs_abort_transaction as early as possible when an error condition is
c5f4ccb2f77355 Anand Jain   2016-03-16  3519   * detected, that way the exact line number is reported.
c5f4ccb2f77355 Anand Jain   2016-03-16  3520   */
66642832f06a43 Jeff Mahoney 2016-06-10  3521  #define btrfs_abort_transaction(trans, errno)		\
c5f4ccb2f77355 Anand Jain   2016-03-16  3522  do {								\
c5f4ccb2f77355 Anand Jain   2016-03-16  3523  	/* Report first abort since mount */			\
c5f4ccb2f77355 Anand Jain   2016-03-16  3524  	if (!test_and_set_bit(BTRFS_FS_STATE_TRANS_ABORTED,	\
66642832f06a43 Jeff Mahoney 2016-06-10 @3525  			&((trans)->fs_info->fs_state))) {	\
f95ebdbed46a4d Josef Bacik  2020-07-21  3526  		if ((errno) != -EIO && (errno) != -EROFS) {		\
c5f4ccb2f77355 Anand Jain   2016-03-16  3527  			WARN(1, KERN_DEBUG				\
c5f4ccb2f77355 Anand Jain   2016-03-16  3528  			"BTRFS: Transaction aborted (error %d)\n",	\
c5f4ccb2f77355 Anand Jain   2016-03-16  3529  			(errno));					\
e5d6b12fe14e89 Chris Mason  2016-12-09  3530  		} else {						\
71367b3fa7f562 Jeff Mahoney 2017-02-15  3531  			btrfs_debug((trans)->fs_info,			\
71367b3fa7f562 Jeff Mahoney 2017-02-15  3532  				    "Transaction aborted (error %d)", \
e5d6b12fe14e89 Chris Mason  2016-12-09  3533  				  (errno));			\
e5d6b12fe14e89 Chris Mason  2016-12-09  3534  		}						\
c5f4ccb2f77355 Anand Jain   2016-03-16  3535  	}							\
66642832f06a43 Jeff Mahoney 2016-06-10  3536  	__btrfs_abort_transaction((trans), __func__,		\
c5f4ccb2f77355 Anand Jain   2016-03-16  3537  				  __LINE__, (errno));		\
c5f4ccb2f77355 Anand Jain   2016-03-16  3538  } while (0)
c5f4ccb2f77355 Anand Jain   2016-03-16  3539  

:::::: The code at line 3525 was first introduced by commit
:::::: 66642832f06a4351e23cea6cf254967c227f8224 btrfs: btrfs_abort_transaction, drop root parameter

:::::: TO: Jeff Mahoney <jeffm@suse.com>
:::::: CC: David Sterba <dsterba@suse.com>

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

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

* fs/btrfs/ctree.h:3525:34: warning: dereference of NULL 'trans' [CWE-476]
@ 2022-06-13 18:20 kernel test robot
  0 siblings, 0 replies; 2+ messages in thread
From: kernel test robot @ 2022-06-13 18:20 UTC (permalink / raw)
  To: kbuild

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

:::::: 
:::::: Manual check reason: "low confidence bisect report"
:::::: Manual check reason: "low confidence static check first_new_problem: fs/btrfs/ctree.h:3525:34: warning: dereference of NULL 'trans' [CWE-476] [-Wanalyzer-null-dereference]"
:::::: 

CC: kbuild-all(a)lists.01.org
BCC: lkp(a)intel.com
CC: linux-kernel(a)vger.kernel.org
TO: Filipe Manana <fdmanana@suse.com>
CC: David Sterba <dsterba@suse.com>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   b13baccc3850ca8b8cccbf8ed9912dbaa0fdf7f3
commit: 79bd37120b149532af5b21953643ed74af69654f btrfs: rework chunk allocation to avoid exhaustion of the system chunk array
date:   11 months ago
:::::: branch date: 19 hours ago
:::::: commit date: 11 months ago
config: arm-randconfig-c002-20220611 (https://download.01.org/0day-ci/archive/20220614/202206140255.Esy9Vda1-lkp(a)intel.com/config)
compiler: arm-linux-gnueabi-gcc (GCC) 11.3.0
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://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=79bd37120b149532af5b21953643ed74af69654f
        git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
        git fetch --no-tags linus master
        git checkout 79bd37120b149532af5b21953643ed74af69654f
        # save the config file
         ARCH=arm KBUILD_USERCFLAGS='-fanalyzer -Wno-error' 

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


gcc-analyzer warnings: (new ones prefixed by >>)
                                   |      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                                   |      |         |
                                   |      |         (67) ...to here
                                   |......
                                   | 2560 |         if (ret) {
                                   |      |            ~           
                                   |      |            |
                                   |      |            (68) following 'false' branch (when 'ret == 0')...
                                   |
                                 'split_node': event 69
                                   |
                                   |fs/btrfs/ctree.h:1925:46:
                                   | 1925 |                 sizeof(struct btrfs_key_ptr) * nr;
                                   |      |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~
                                   |      |                                              |
                                   |      |                                              (69) ...to here
                                   |
                                 'split_node': event 70
                                   |
                                   |fs/btrfs/ctree.c:2574:9:
                                   | 2574 |         insert_ptr(trans, path, &disk_key, split->start,
                                   |      |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                                   |      |         |
                                   |      |         (70) calling 'insert_ptr' from 'split_node'
                                   | 2575 |                    path->slots[level + 1] + 1, level + 1);
                                   |      |                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                                   |
                                   +--> 'insert_ptr': event 71
                                          |
                                          | 2460 | static void insert_ptr(struct btrfs_trans_handle *trans,
                                          |      |             ^~~~~~~~~~
                                          |      |             |
                                          |      |             (71) entry to 'insert_ptr'
                                          |
                                        'insert_ptr': event 72
                                          |
                                          |include/asm-generic/bug.h:183:35:
                                          |  183 | #define BUG_ON(condition) do { if (unlikely(condition)) BUG(); } while (0)
                                          |      |                                   ^
                                          |      |                                   |
                                          |      |                                   (72) following 'false' branch...
   fs/btrfs/ctree.c:2469:9: note: in expansion of macro 'BUG_ON'
                                          | 2469 |         BUG_ON(!path->nodes[level]);
                                          |      |         ^~~~~~
                                          |
                                        'insert_ptr': event 73
                                          |
                                          | 2472 |         nritems = btrfs_header_nritems(lower);
                                          |      |                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~
                                          |      |                   |
                                          |      |                   (73) ...to here
                                          |
                                        'insert_ptr': event 74
                                          |
                                          |include/asm-generic/bug.h:183:35:
                                          |  183 | #define BUG_ON(condition) do { if (unlikely(condition)) BUG(); } while (0)
                                          |      |                                   ^
                                          |      |                                   |
                                          |      |                                   (74) following 'false' branch...
   fs/btrfs/ctree.c:2473:9: note: in expansion of macro 'BUG_ON'
                                          | 2473 |         BUG_ON(slot > nritems);
                                          |      |         ^~~~~~
                                          |
                                        'insert_ptr': event 75
                                          |
                                          | 2474 |         BUG_ON(nritems == BTRFS_NODEPTRS_PER_BLOCK(trans->fs_info));
                                          |      |                                                    ~~~~~^~~~~~~~~
                                          |      |                                                         |
                                          |      |                                                         (75) ...to here
   include/linux/compiler.h:78:45: note: in definition of macro 'unlikely'
                                          |   78 | # define unlikely(x)    __builtin_expect(!!(x), 0)
                                          |      |                                             ^
   fs/btrfs/ctree.c:2474:9: note: in expansion of macro 'BUG_ON'
                                          | 2474 |         BUG_ON(nritems == BTRFS_NODEPTRS_PER_BLOCK(trans->fs_info));
                                          |      |         ^~~~~~
                                          |
                                        'insert_ptr': event 76
                                          |
                                          | 2474 |         BUG_ON(nritems == BTRFS_NODEPTRS_PER_BLOCK(trans->fs_info));
                                          |      |                                                    ~~~~~^~~~~~~~~
                                          |      |                                                         |
                                          |      |                                                         (76) dereference of NULL 'trans'
   include/linux/compiler.h:78:45: note: in definition of macro 'unlikely'
                                          |   78 | # define unlikely(x)    __builtin_expect(!!(x), 0)
                                          |      |                                             ^
   fs/btrfs/ctree.c:2474:9: note: in expansion of macro 'BUG_ON'
                                          | 2474 |         BUG_ON(nritems == BTRFS_NODEPTRS_PER_BLOCK(trans->fs_info));
                                          |      |         ^~~~~~
                                          |
   In file included from include/linux/bitops.h:32,
                    from include/linux/kernel.h:12,
                    from include/asm-generic/bug.h:20,
                    from arch/arm/include/asm/bug.h:60,
                    from include/linux/bug.h:5,
                    from include/linux/thread_info.h:12,
                    from include/asm-generic/current.h:5,
                    from ./arch/arm/include/generated/asm/current.h:1,
                    from include/linux/sched.h:12,
                    from fs/btrfs/ctree.c:6:
   fs/btrfs/ctree.c: In function 'split_node':
>> fs/btrfs/ctree.h:3525:34: warning: dereference of NULL 'trans' [CWE-476] [-Wanalyzer-null-dereference]
    3525 |                         &((trans)->fs_info->fs_state))) {       \
         |                           ~~~~~~~^~~~~~~~~
   arch/arm/include/asm/bitops.h:181:59: note: in definition of macro 'ATOMIC_BITOP'
     181 |         (__builtin_constant_p(nr) ? ____atomic_##name(nr, p) : _##name(nr,p))
         |                                                           ^
   fs/btrfs/ctree.h:3524:14: note: in expansion of macro 'test_and_set_bit'
    3524 |         if (!test_and_set_bit(BTRFS_FS_STATE_TRANS_ABORTED,     \
         |              ^~~~~~~~~~~~~~~~
   fs/btrfs/ctree.c:2561:17: note: in expansion of macro 'btrfs_abort_transaction'
    2561 |                 btrfs_abort_transaction(trans, ret);
         |                 ^~~~~~~~~~~~~~~~~~~~~~~
     'btrfs_previous_extent_item': events 1-4
       |
       | 4577 | int btrfs_previous_extent_item(struct btrfs_root *root,
       |      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~
       |      |     |
       |      |     (1) entry to 'btrfs_previous_extent_item'
       |......
       | 4586 |                 if (path->slots[0] == 0) {
       |      |                    ~
       |      |                    |
       |      |                    (2) following 'true' branch...
       | 4587 |                         ret = btrfs_prev_leaf(root, path);
       |      |                               ~~~~~~~~~~~~~~~~~~~~~~~~~~~
       |      |                               |
       |      |                               (3) ...to here
       |      |                               (4) calling 'btrfs_prev_leaf' from 'btrfs_previous_extent_item'
       |
       +--> 'btrfs_prev_leaf': events 5-6
              |
              | 4121 | int btrfs_prev_leaf(struct btrfs_root *root, struct btrfs_path *path)
              |      |     ^~~~~~~~~~~~~~~
              |      |     |
              |      |     (5) entry to 'btrfs_prev_leaf'
              |......
              | 4142 |         btrfs_release_path(path);
              |      |         ~~~~~~~~~~~~~~~~~~~~~~~~
              |      |         |
              |      |         (6) calling 'btrfs_release_path' from 'btrfs_prev_leaf'
              |
              +--> 'btrfs_release_path': event 7
                     |
                     |   97 | noinline void btrfs_release_path(struct btrfs_path *p)
                     |      |               ^~~~~~~~~~~~~~~~~~
                     |      |               |
                     |      |               (7) entry to 'btrfs_release_path'
                     |
                   'btrfs_release_path': events 8-9
                     |
                     |  101 |         for (i = 0; i < BTRFS_MAX_LEVEL; i++) {
                     |  102 |                 p->slots[i] = 0;
                     |      |                 ~~~~~~~~~~~~~~~
                     |      |                             |
                     |      |                             (9) ...to here
                     |
              <------+
              |
            'btrfs_prev_leaf': events 10-11
              |
              | 4142 |         btrfs_release_path(path);
              |      |         ^~~~~~~~~~~~~~~~~~~~~~~~
              |      |         |
              |      |         (10) returning to 'btrfs_prev_leaf' from 'btrfs_release_path'
              | 4143 |         ret = btrfs_search_slot(NULL, root, &key, path, 0, 0);
              |      |               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
              |      |               |
              |      |               (11) calling 'btrfs_search_slot' from 'btrfs_prev_leaf'
              |
              +--> 'btrfs_search_slot': event 12
                     |
                     | 1682 | int btrfs_search_slot(struct btrfs_trans_handle *trans, struct btrfs_root *root,
                     |      |     ^~~~~~~~~~~~~~~~~
                     |      |     |
                     |      |     (12) entry to 'btrfs_search_slot'
                     |
                   'btrfs_search_slot': event 13
                     |
                     |include/asm-generic/bug.h:183:35:
                     |  183 | #define BUG_ON(condition) do { if (unlikely(condition)) BUG(); } while (0)
                     |      |                                   ^
                     |      |                                   |
                     |      |                                   (13) following 'true' branch...
   fs/btrfs/ctree.c:1701:9: note: in expansion of macro 'BUG_ON'
                     | 1701 |         BUG_ON(!cow && ins_len);
                     |      |         ^~~~~~
                     |
                   'btrfs_search_slot': event 14
                     |
                     | 1701 |         BUG_ON(!cow && ins_len);
                     |      |                     ^~
                     |      |                     |
                     |      |                     (14) ...to here
   include/linux/compiler.h:78:45: note: in definition of macro 'unlikely'
                     |   78 | # define unlikely(x)    __builtin_expect(!!(x), 0)
                     |      |                                             ^
   fs/btrfs/ctree.c:1701:9: note: in expansion of macro 'BUG_ON'
                     | 1701 |         BUG_ON(!cow && ins_len);
                     |      |         ^~~~~~
                     |
                   'btrfs_search_slot': event 15

vim +/trans +3525 fs/btrfs/ctree.h

533574c6bc30cf Joe Perches  2012-07-30  3511  
c0d19e2b9a521b David Sterba 2015-04-24  3512  __cold
49b25e0540904b Jeff Mahoney 2012-03-01  3513  void __btrfs_abort_transaction(struct btrfs_trans_handle *trans,
66642832f06a43 Jeff Mahoney 2016-06-10  3514  			       const char *function,
acce952b026382 liubo        2011-01-06  3515  			       unsigned int line, int errno);
acce952b026382 liubo        2011-01-06  3516  
c5f4ccb2f77355 Anand Jain   2016-03-16  3517  /*
c5f4ccb2f77355 Anand Jain   2016-03-16  3518   * Call btrfs_abort_transaction as early as possible when an error condition is
c5f4ccb2f77355 Anand Jain   2016-03-16  3519   * detected, that way the exact line number is reported.
c5f4ccb2f77355 Anand Jain   2016-03-16  3520   */
66642832f06a43 Jeff Mahoney 2016-06-10  3521  #define btrfs_abort_transaction(trans, errno)		\
c5f4ccb2f77355 Anand Jain   2016-03-16  3522  do {								\
c5f4ccb2f77355 Anand Jain   2016-03-16  3523  	/* Report first abort since mount */			\
c5f4ccb2f77355 Anand Jain   2016-03-16  3524  	if (!test_and_set_bit(BTRFS_FS_STATE_TRANS_ABORTED,	\
66642832f06a43 Jeff Mahoney 2016-06-10 @3525  			&((trans)->fs_info->fs_state))) {	\
f95ebdbed46a4d Josef Bacik  2020-07-21  3526  		if ((errno) != -EIO && (errno) != -EROFS) {		\
c5f4ccb2f77355 Anand Jain   2016-03-16  3527  			WARN(1, KERN_DEBUG				\
c5f4ccb2f77355 Anand Jain   2016-03-16  3528  			"BTRFS: Transaction aborted (error %d)\n",	\
c5f4ccb2f77355 Anand Jain   2016-03-16  3529  			(errno));					\
e5d6b12fe14e89 Chris Mason  2016-12-09  3530  		} else {						\
71367b3fa7f562 Jeff Mahoney 2017-02-15  3531  			btrfs_debug((trans)->fs_info,			\
71367b3fa7f562 Jeff Mahoney 2017-02-15  3532  				    "Transaction aborted (error %d)", \
e5d6b12fe14e89 Chris Mason  2016-12-09  3533  				  (errno));			\
e5d6b12fe14e89 Chris Mason  2016-12-09  3534  		}						\
c5f4ccb2f77355 Anand Jain   2016-03-16  3535  	}							\
66642832f06a43 Jeff Mahoney 2016-06-10  3536  	__btrfs_abort_transaction((trans), __func__,		\
c5f4ccb2f77355 Anand Jain   2016-03-16  3537  				  __LINE__, (errno));		\
c5f4ccb2f77355 Anand Jain   2016-03-16  3538  } while (0)
c5f4ccb2f77355 Anand Jain   2016-03-16  3539  

:::::: The code at line 3525 was first introduced by commit
:::::: 66642832f06a4351e23cea6cf254967c227f8224 btrfs: btrfs_abort_transaction, drop root parameter

:::::: TO: Jeff Mahoney <jeffm@suse.com>
:::::: CC: David Sterba <dsterba@suse.com>

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

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

end of thread, other threads:[~2022-06-13 18:20 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-06-12 13:29 fs/btrfs/ctree.h:3525:34: warning: dereference of NULL 'trans' [CWE-476] kernel test robot
  -- strict thread matches above, loose matches on Subject: below --
2022-06-13 18:20 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.