All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: kbuild@lists.01.org
Subject: [dhowells-fs:netfs-maple 8/51] lib/maple_tree.c:319:2: warning: Value stored to 'node' is never read [clang-analyzer-deadcode.DeadStores]
Date: Fri, 18 Feb 2022 13:40:49 +0800	[thread overview]
Message-ID: <202202181304.SQLFm9Xy-lkp@intel.com> (raw)

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

CC: llvm(a)lists.linux.dev
CC: kbuild-all(a)lists.01.org
CC: linux-kernel(a)vger.kernel.org
TO: "Liam R. Howlett" <Liam.Howlett@Oracle.com>
CC: "Matthew Wilcox (Oracle)" <willy@infradead.org>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs.git netfs-maple
head:   5cb7f190822d09757b30cd9539e57eef72552d1f
commit: 18a91233bf966f9353e07def1416c05afccb3b14 [8/51] Maple Tree: Add new data structure
:::::: branch date: 2 days ago
:::::: commit date: 3 days ago
config: mips-randconfig-c004-20220217 (https://download.01.org/0day-ci/archive/20220218/202202181304.SQLFm9Xy-lkp(a)intel.com/config)
compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project d271fc04d5b97b12e6b797c6067d3c96a8d7470e)
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
        # install mips cross compiling tool for clang build
        # apt-get install binutils-mips-linux-gnu
        # https://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs.git/commit/?id=18a91233bf966f9353e07def1416c05afccb3b14
        git remote add dhowells-fs https://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs.git
        git fetch --no-tags dhowells-fs netfs-maple
        git checkout 18a91233bf966f9353e07def1416c05afccb3b14
        # save the config file to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=mips 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 >>)
                   n = _copy_from_user(to, from, n);
                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/uaccess.h:157:6: note: Assuming the condition is true
           if (!should_fail_usercopy() && likely(access_ok(from, n))) {
               ^~~~~~~~~~~~~~~~~~~~~~~
   include/linux/uaccess.h:157:6: note: Left side of '&&' is true
   include/linux/uaccess.h:157:2: note: Taking true branch
           if (!should_fail_usercopy() && likely(access_ok(from, n))) {
           ^
   include/linux/uaccess.h:159:9: note: Calling 'raw_copy_from_user'
                   res = raw_copy_from_user(to, from, n);
                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   arch/mips/include/asm/uaccess.h:455:2: note: Returning without writing to 'to->flags'
           return __cu_len_r;
           ^
   include/linux/uaccess.h:159:9: note: Returning from 'raw_copy_from_user'
                   res = raw_copy_from_user(to, from, n);
                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/uaccess.h:161:6: note: Assuming 'res' is 0
           if (unlikely(res))
               ^
   include/linux/compiler.h:78:40: note: expanded from macro 'unlikely'
   # define unlikely(x)    __builtin_expect(!!(x), 0)
                                             ^~~~
   include/linux/uaccess.h:161:2: note: Taking false branch
           if (unlikely(res))
           ^
   include/linux/uaccess.h:163:2: note: Returning without writing to 'to->flags'
           return res;
           ^
   include/linux/uaccess.h:192:7: note: Returning from '_copy_from_user'
                   n = _copy_from_user(to, from, n);
                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/uaccess.h:193:2: note: Returning without writing to 'to->flags'
           return n;
           ^
   sound/core/seq/seq_clientmgr.c:1055:7: note: Returning from 'copy_from_user'
                   if (copy_from_user(&event, buf, len)) {
                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   sound/core/seq/seq_clientmgr.c:1055:3: note: Taking false branch
                   if (copy_from_user(&event, buf, len)) {
                   ^
   sound/core/seq/seq_clientmgr.c:1061:7: note: Calling 'check_event_type_and_length'
                   if (check_event_type_and_length(&event)) {
                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   sound/core/seq/seq_clientmgr.c:992:10: note: The left operand of '&' is a garbage value
           switch (snd_seq_ev_length_type(ev)) {
                   ^
   include/sound/asequencer.h:53:49: note: expanded from macro 'snd_seq_ev_length_type'
   #define snd_seq_ev_length_type(ev)      ((ev)->flags & SNDRV_SEQ_EVENT_LENGTH_MASK)
                                            ~~~~~~~~~~~ ^
   sound/core/seq/seq_clientmgr.c:1232:2: warning: Call to function 'strcpy' is insecure as it does not provide bounding of the memory buffer. Replace unbounded copy functions with analogous functions that support length arguments such as 'strlcpy'. CWE-119 [clang-analyzer-security.insecureAPI.strcpy]
           strcpy(info->name, cptr->name);
           ^~~~~~
   sound/core/seq/seq_clientmgr.c:1232:2: note: Call to function 'strcpy' is insecure as it does not provide bounding of the memory buffer. Replace unbounded copy functions with analogous functions that support length arguments such as 'strlcpy'. CWE-119
           strcpy(info->name, cptr->name);
           ^~~~~~
   Suppressed 2 warnings (2 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.
   2 warnings generated.
   Suppressed 2 warnings (2 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.
   2 warnings generated.
   Suppressed 2 warnings (2 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.
   2 warnings generated.
   Suppressed 2 warnings (2 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.
   4 warnings generated.
   crypto/poly1305_generic.c:49:4: warning: Value stored to 'src' is never read [clang-analyzer-deadcode.DeadStores]
                           src += POLY1305_BLOCK_SIZE;
                           ^
   crypto/poly1305_generic.c:49:4: note: Value stored to 'src' is never read
   Suppressed 3 warnings (3 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.
   3 warnings generated.
   Suppressed 3 warnings (3 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.
   3 warnings generated.
   Suppressed 3 warnings (3 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.
   3 warnings generated.
   Suppressed 3 warnings (3 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.
   1 warning generated.
   Suppressed 1 warnings (1 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.
   1 warning generated.
   Suppressed 1 warnings (1 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.
   1 warning generated.
   Suppressed 1 warnings (1 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.
   2 warnings generated.
   Suppressed 2 warnings (2 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.
   1 warning generated.
   Suppressed 1 warnings (1 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.
>> lib/maple_tree.c:319:2: warning: Value stored to 'node' is never read [clang-analyzer-deadcode.DeadStores]
           node = (void *)((unsigned long)node & ~MAPLE_ENODE_NULL);
           ^      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   lib/maple_tree.c:319:2: note: Value stored to 'node' is never read
           node = (void *)((unsigned long)node & ~MAPLE_ENODE_NULL);
           ^      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   lib/maple_tree.c:324:2: warning: Value stored to 'node' is never read [clang-analyzer-deadcode.DeadStores]
           node = (void *)((unsigned long)node | MAPLE_ENODE_NULL);
           ^      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   lib/maple_tree.c:324:2: note: Value stored to 'node' is never read
           node = (void *)((unsigned long)node | MAPLE_ENODE_NULL);
           ^      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> lib/maple_tree.c:1208:23: warning: Value stored to 'nodep' during its initialization is never read [clang-analyzer-deadcode.DeadStores]
           struct maple_alloc **nodep = &mas->alloc;
                                ^~~~~   ~~~~~~~~~~~
   lib/maple_tree.c:1208:23: note: Value stored to 'nodep' during its initialization is never read
           struct maple_alloc **nodep = &mas->alloc;
                                ^~~~~   ~~~~~~~~~~~
   lib/maple_tree.c:1218:20: warning: Access to field 'node_count' results in a dereference of a null pointer (loaded from field 'alloc') [clang-analyzer-core.NullDereference]
           if (!allocated || mas->alloc->node_count == MAPLE_ALLOC_SLOTS - 1) {
                             ^
   lib/maple_tree.c:6191:6: note: Assuming the condition is false
           if (!mt_is_alloc(mt))
               ^~~~~~~~~~~~~~~~
   lib/maple_tree.c:6191:2: note: Taking false branch
           if (!mt_is_alloc(mt))
           ^
   lib/maple_tree.c:6194:6: note: '__ret_do_once' is false
           if (WARN_ON_ONCE(mt_is_reserved(entry)))
               ^
   include/asm-generic/bug.h:146:2: note: expanded from macro 'WARN_ON_ONCE'
           DO_ONCE_LITE_IF(condition, WARN_ON, 1)
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/once_lite.h:17:16: note: expanded from macro 'DO_ONCE_LITE_IF'
                   if (unlikely(__ret_do_once && !__already_done)) {       \
                                ^~~~~~~~~~~~~
   include/linux/compiler.h:78:42: note: expanded from macro 'unlikely'
   # define unlikely(x)    __builtin_expect(!!(x), 0)
                                               ^
   lib/maple_tree.c:6194:6: note: Left side of '&&' is false
           if (WARN_ON_ONCE(mt_is_reserved(entry)))
               ^
   include/asm-generic/bug.h:146:2: note: expanded from macro 'WARN_ON_ONCE'
           DO_ONCE_LITE_IF(condition, WARN_ON, 1)
           ^
   include/linux/once_lite.h:17:30: note: expanded from macro 'DO_ONCE_LITE_IF'
                   if (unlikely(__ret_do_once && !__already_done)) {       \
                                              ^
   lib/maple_tree.c:6194:6: note: Taking false branch
           if (WARN_ON_ONCE(mt_is_reserved(entry)))
               ^
   include/asm-generic/bug.h:146:2: note: expanded from macro 'WARN_ON_ONCE'
           DO_ONCE_LITE_IF(condition, WARN_ON, 1)
           ^
   include/linux/once_lite.h:17:3: note: expanded from macro 'DO_ONCE_LITE_IF'
                   if (unlikely(__ret_do_once && !__already_done)) {       \
                   ^
   lib/maple_tree.c:6194:2: note: Taking false branch
           if (WARN_ON_ONCE(mt_is_reserved(entry)))
           ^
   lib/maple_tree.c:6197:6: note: Assuming 'min' is <= 'max'
           if (min > max)
               ^~~~~~~~~
   lib/maple_tree.c:6197:2: note: Taking false branch
           if (min > max)
           ^
   lib/maple_tree.c:6200:6: note: Assuming 'max' is >= 'size'
           if (max < size)
               ^~~~~~~~~~
   lib/maple_tree.c:6200:2: note: Taking false branch
           if (max < size)
           ^
   lib/maple_tree.c:6203:6: note: Assuming 'size' is not equal to 0
           if (!size)
               ^~~~~
   lib/maple_tree.c:6203:2: note: Taking false branch
           if (!size)
           ^
   lib/maple_tree.c:6211:8: note: Calling 'mas_alloc'
           ret = mas_alloc(&mas, entry, size, startp);
                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   lib/maple_tree.c:5309:2: note: Calling 'mas_start'
           mas_start(mas);
           ^~~~~~~~~~~~~~
   lib/maple_tree.c:1316:13: note: Calling 'mas_is_start'
           if (likely(mas_is_start(mas))) {
                      ^
   include/linux/compiler.h:77:40: note: expanded from macro 'likely'
   # define likely(x)      __builtin_expect(!!(x), 1)
                                               ^
   lib/maple_tree.c:236:2: note: Returning without writing to 'mas->alloc', which participates in a condition later
           return mas->node == MAS_START;
           ^
   lib/maple_tree.c:236:2: note: Returning without writing to 'mas->alloc'
   lib/maple_tree.c:1316:13: note: Returning from 'mas_is_start'
           if (likely(mas_is_start(mas))) {
                      ^
   include/linux/compiler.h:77:40: note: expanded from macro 'likely'
   # define likely(x)      __builtin_expect(!!(x), 1)
                                               ^
   lib/maple_tree.c:1316:2: note: Taking true branch
           if (likely(mas_is_start(mas))) {
           ^
   lib/maple_tree.c:1325:10: note: Calling 'mas_root'
                   root = mas_root(mas);
                          ^~~~~~~~~~~~~
   lib/maple_tree.c:847:9: note: Left side of '||' is false
           return rcu_dereference_check(mas->tree->ma_root, mt_locked(mas->tree));
                  ^
   include/linux/rcupdate.h:531:2: note: expanded from macro 'rcu_dereference_check'
           __rcu_dereference_check((p), __UNIQUE_ID(rcu), \
           ^
   include/linux/rcupdate.h:391:43: note: expanded from macro '__rcu_dereference_check'
--
           ^
   lib/maple_tree.c:5312:7: note: Calling 'mas_is_err'
                   if (mas_is_err(mas))
                       ^~~~~~~~~~~~~~~
   lib/maple_tree.c:241:2: note: Returning without writing to 'mas->alloc', which participates in a condition later
           return xa_is_err(mas->node);
           ^
   lib/maple_tree.c:241:2: note: Returning without writing to 'mas->alloc'
   lib/maple_tree.c:5312:7: note: Returning from 'mas_is_err'
                   if (mas_is_err(mas))
                       ^~~~~~~~~~~~~~~
   lib/maple_tree.c:5312:3: note: Taking false branch
                   if (mas_is_err(mas))
                   ^
   lib/maple_tree.c:5315:7: note: Assuming field 'index' is not equal to 0
                   if (!mas->index)
                       ^~~~~~~~~~~
   lib/maple_tree.c:5315:3: note: Taking false branch
                   if (!mas->index)
                   ^
   lib/maple_tree.c:6211:8: note: Returning from 'mas_alloc'
           ret = mas_alloc(&mas, entry, size, startp);
                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   lib/maple_tree.c:6212:6: note: Calling 'mas_nomem'
           if (mas_nomem(&mas, gfp))
               ^~~~~~~~~~~~~~~~~~~~
   lib/maple_tree.c:6011:13: note: Assuming the condition is false
           if (likely(mas->node != MA_ERROR(-ENOMEM))) {
                      ^
   include/linux/compiler.h:77:40: note: expanded from macro 'likely'
   # define likely(x)      __builtin_expect(!!(x), 1)
                                               ^
   lib/maple_tree.c:6011:2: note: Taking false branch
           if (likely(mas->node != MA_ERROR(-ENOMEM))) {
           ^
   lib/maple_tree.c:6016:35: note: Left side of '&&' is false
           if (gfpflags_allow_blocking(gfp) && !mt_external_lock(mas->tree)) {
                                            ^
   lib/maple_tree.c:6021:3: note: Calling 'mas_alloc_nodes'
                   mas_alloc_nodes(mas, gfp);
                   ^~~~~~~~~~~~~~~~~~~~~~~~~
   lib/maple_tree.c:1209:28: note: Calling 'mas_allocated'
           unsigned long allocated = mas_allocated(mas);
                                     ^~~~~~~~~~~~~~~~~~
   lib/maple_tree.c:554:6: note: Assuming field 'alloc' is non-null, which participates in a condition later
           if (!mas->alloc || ((unsigned long)mas->alloc & 0x1))
               ^~~~~~~~~~~
   lib/maple_tree.c:554:6: note: Left side of '||' is false
   lib/maple_tree.c:554:22: note: Assuming the condition is false
           if (!mas->alloc || ((unsigned long)mas->alloc & 0x1))
                               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   lib/maple_tree.c:554:2: note: Taking false branch
           if (!mas->alloc || ((unsigned long)mas->alloc & 0x1))
           ^
   lib/maple_tree.c:557:2: note: Returning value, which participates in a condition later
           return mas->alloc->total;
           ^~~~~~~~~~~~~~~~~~~~~~~~
   lib/maple_tree.c:1209:28: note: Returning from 'mas_allocated'
           unsigned long allocated = mas_allocated(mas);
                                     ^~~~~~~~~~~~~~~~~~
   lib/maple_tree.c:1214:6: note: Assuming 'requested' is not equal to 0
           if (!requested)
               ^~~~~~~~~~
   lib/maple_tree.c:1214:2: note: Taking false branch
           if (!requested)
           ^
   lib/maple_tree.c:1217:2: note: Calling 'mas_set_alloc_req'
           mas_set_alloc_req(mas, 0);
           ^~~~~~~~~~~~~~~~~~~~~~~~~
   lib/maple_tree.c:572:12: note: Field 'alloc' is non-null, which participates in a condition later
           if (!mas->alloc || ((unsigned long)mas->alloc & 0x1)) {
                     ^
   lib/maple_tree.c:572:6: note: Left side of '||' is false
           if (!mas->alloc || ((unsigned long)mas->alloc & 0x1)) {
               ^
   lib/maple_tree.c:572:22: note: Assuming the condition is true
           if (!mas->alloc || ((unsigned long)mas->alloc & 0x1)) {
                               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   lib/maple_tree.c:572:2: note: Taking true branch
           if (!mas->alloc || ((unsigned long)mas->alloc & 0x1)) {
           ^
   lib/maple_tree.c:573:8: note: 'count' is 0
                   if (!count)
                        ^~~~~
   lib/maple_tree.c:573:3: note: Taking true branch
                   if (!count)
                   ^
   lib/maple_tree.c:574:4: note: Null pointer value stored to 'mas.alloc'
                           mas->alloc = NULL;
                           ^~~~~~~~~~~~~~~~~
   lib/maple_tree.c:1217:2: note: Returning from 'mas_set_alloc_req'
           mas_set_alloc_req(mas, 0);
           ^~~~~~~~~~~~~~~~~~~~~~~~~
   lib/maple_tree.c:1218:6: note: Assuming 'allocated' is not equal to 0
           if (!allocated || mas->alloc->node_count == MAPLE_ALLOC_SLOTS - 1) {
               ^~~~~~~~~~
   lib/maple_tree.c:1218:6: note: Left side of '||' is false
   lib/maple_tree.c:1218:20: note: Access to field 'node_count' results in a dereference of a null pointer (loaded from field 'alloc')
           if (!allocated || mas->alloc->node_count == MAPLE_ALLOC_SLOTS - 1) {
                             ^    ~~~~~
>> lib/maple_tree.c:1690:3: warning: Dereference of null pointer [clang-analyzer-core.NullDereference]
                   rcu_assign_pointer(slots[offset], mas->node);
                   ^
   include/linux/rcupdate.h:455:3: note: expanded from macro 'rcu_assign_pointer'
                   smp_store_release(&p, RCU_INITIALIZER((typeof(p))_r_a_p__v)); \
                   ^
   include/asm-generic/barrier.h:190:2: note: expanded from macro 'smp_store_release'
           WRITE_ONCE(*p, v);                                              \
           ^
   include/asm-generic/rwonce.h:61:2: note: expanded from macro 'WRITE_ONCE'
           __WRITE_ONCE(x, val);                                           \
           ^
   include/asm-generic/rwonce.h:55:30: note: expanded from macro '__WRITE_ONCE'
           *(volatile typeof(x) *)&(x) = (val);                            \
                                       ^
   lib/maple_tree.c:3393:2: note: Taking false branch
           if (mas_is_err(mas))
           ^
   lib/maple_tree.c:3403:2: note: Loop condition is true.  Entering loop body
           while (height++ <= mas->depth) {
           ^
   lib/maple_tree.c:3404:7: note: Assuming the condition is false
                   if (mt_slots[b_node->type] > b_node->b_end) {
                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   lib/maple_tree.c:3404:3: note: Taking false branch
                   if (mt_slots[b_node->type] > b_node->b_end) {
                   ^
   lib/maple_tree.c:3420:3: note: Taking false branch
                   if (mas_push_data(mas, height, &mast, true))
                   ^
   lib/maple_tree.c:3424:3: note: Taking false branch
                   if (mas_push_data(mas, height, &mast, false))
                   ^
   lib/maple_tree.c:3403:9: note: Assuming the condition is false
           while (height++ <= mas->depth) {
                  ^~~~~~~~~~~~~~~~~~~~~~
   lib/maple_tree.c:3403:2: note: Loop condition is false. Execution continues on line 3440
           while (height++ <= mas->depth) {
           ^
   lib/maple_tree.c:3442:2: note: Calling 'mas_wmb_replace'
           mas_wmb_replace(mas, mast.free, NULL);
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   lib/maple_tree.c:2629:2: note: Calling 'mas_replace'
           mas_replace(mas, true);
           ^~~~~~~~~~~~~~~~~~~~~~
   lib/maple_tree.c:1670:2: note: 'slots' initialized to a null pointer value
           void __rcu **slots = NULL;
           ^~~~~~~~~~~~~~~~~~
   lib/maple_tree.c:1672:6: note: Assuming the condition is true
           if (ma_is_root(mn)) {
               ^~~~~~~~~~~~~~
   lib/maple_tree.c:1672:2: note: Taking true branch
           if (ma_is_root(mn)) {
           ^
   lib/maple_tree.c:1681:7: note: 'advanced' is true
           if (!advanced && !mte_is_leaf(mas->node))
                ^~~~~~~~
   lib/maple_tree.c:1681:16: note: Left side of '&&' is false
           if (!advanced && !mte_is_leaf(mas->node))
                         ^
   lib/maple_tree.c:1684:6: note: Assuming the condition is false
           if (mte_is_root(mas->node)) {
               ^~~~~~~~~~~~~~~~~~~~~~
   lib/maple_tree.c:1684:2: note: Taking false branch
           if (mte_is_root(mas->node)) {
           ^
   lib/maple_tree.c:1690:3: note: Left side of '&&' is false
                   rcu_assign_pointer(slots[offset], mas->node);
                   ^
   include/linux/rcupdate.h:452:30: note: expanded from macro 'rcu_assign_pointer'
           if (__builtin_constant_p(v) && (_r_a_p__v) == (uintptr_t)NULL)        \
                                       ^
   lib/maple_tree.c:1690:3: note: Left side of '||' is false
                   rcu_assign_pointer(slots[offset], mas->node);
                   ^
   include/linux/rcupdate.h:455:3: note: expanded from macro 'rcu_assign_pointer'
                   smp_store_release(&p, RCU_INITIALIZER((typeof(p))_r_a_p__v)); \
                   ^
   include/asm-generic/barrier.h:188:2: note: expanded from macro 'smp_store_release'
           compiletime_assert_atomic_type(*p);                             \
           ^
   include/linux/compiler_types.h:349:21: note: expanded from macro 'compiletime_assert_atomic_type'
           compiletime_assert(__native_word(t),                            \
                              ^
   include/linux/compiler_types.h:313:3: note: expanded from macro '__native_word'
           (sizeof(t) == sizeof(char) || sizeof(t) == sizeof(short) || \
            ^
   lib/maple_tree.c:1690:3: note: Left side of '||' is false
                   rcu_assign_pointer(slots[offset], mas->node);
                   ^
   include/linux/rcupdate.h:455:3: note: expanded from macro 'rcu_assign_pointer'
                   smp_store_release(&p, RCU_INITIALIZER((typeof(p))_r_a_p__v)); \
                   ^
   include/asm-generic/barrier.h:188:2: note: expanded from macro 'smp_store_release'
           compiletime_assert_atomic_type(*p);                             \
           ^
   include/linux/compiler_types.h:349:21: note: expanded from macro 'compiletime_assert_atomic_type'
           compiletime_assert(__native_word(t),                            \
                              ^
   include/linux/compiler_types.h:313:3: note: expanded from macro '__native_word'
           (sizeof(t) == sizeof(char) || sizeof(t) == sizeof(short) || \
--
   lib/maple_tree.c:5353:6: note: 'ret' is 0
           if (ret)
               ^~~
   lib/maple_tree.c:5353:2: note: Taking false branch
           if (ret)
           ^
   lib/maple_tree.c:5356:2: note: Taking false branch
           if (mas_is_err(mas))
           ^
   lib/maple_tree.c:5359:11: note: Field 'offset' is not equal to MAPLE_NODE_SLOTS
           if (mas->offset == MAPLE_NODE_SLOTS)
                    ^
   lib/maple_tree.c:5359:2: note: Taking false branch
           if (mas->offset == MAPLE_NODE_SLOTS)
           ^
   lib/maple_tree.c:5362:2: note: Calling 'mas_fill_gap'
           mas_fill_gap(mas, entry, mas->offset, size, index);
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   lib/maple_tree.c:5155:2: note: Calling 'mas_wr_store_entry'
           mas_wr_store_entry(&wr_mas);
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~
   lib/maple_tree.c:4262:7: note: Assuming field 'content' is null
           if ((wr_mas->content = mas_start(mas)) || mas_is_none(mas) ||
                ^~~~~~~~~~~~~~~
   lib/maple_tree.c:4262:6: note: Left side of '||' is false
           if ((wr_mas->content = mas_start(mas)) || mas_is_none(mas) ||
               ^
   lib/maple_tree.c:4262:6: note: Left side of '||' is false
   lib/maple_tree.c:4262:2: note: Taking false branch
           if ((wr_mas->content = mas_start(mas)) || mas_is_none(mas) ||
           ^
   lib/maple_tree.c:4268:2: note: Taking true branch
           if (unlikely(!mas_wr_walk(wr_mas))) {
           ^
   lib/maple_tree.c:4269:3: note: Calling 'mas_wr_spanning_store'
                   mas_wr_spanning_store(wr_mas);
                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   lib/maple_tree.c:3892:15: note: Assuming field 'index' is not equal to 0
           if (unlikely(!mas->index && mas->last == ULONG_MAX))
                        ^
   include/linux/compiler.h:78:42: note: expanded from macro 'unlikely'
   # define unlikely(x)    __builtin_expect(!!(x), 0)
                                               ^
   lib/maple_tree.c:3892:27: note: Left side of '&&' is false
           if (unlikely(!mas->index && mas->last == ULONG_MAX))
                                    ^
   lib/maple_tree.c:3892:2: note: Taking false branch
           if (unlikely(!mas->index && mas->last == ULONG_MAX))
           ^
   lib/maple_tree.c:3900:2: note: Taking false branch
           if (mas_is_err(mas))
           ^
   lib/maple_tree.c:3910:6: note: Assuming the condition is false
           if (r_mas.last + 1)
               ^~~~~~~~~~~~~~
   lib/maple_tree.c:3910:2: note: Taking false branch
           if (r_mas.last + 1)
           ^
   lib/maple_tree.c:3921:15: note: Field 'entry' is non-null
           if (!wr_mas->entry) {
                        ^
   lib/maple_tree.c:3921:2: note: Taking false branch
           if (!wr_mas->entry) {
           ^
   lib/maple_tree.c:3929:17: note: Calling 'mas_store_b_node'
           b_node.b_end = mas_store_b_node(&l_wr_mas, &b_node, l_wr_mas.node_end);
                          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   lib/maple_tree.c:2075:6: note: Assuming 'slot' is 0
           if (slot) {
               ^~~~
   lib/maple_tree.c:2075:2: note: Taking false branch
           if (slot) {
           ^
   lib/maple_tree.c:2083:6: note: Assuming the condition is false
           if (piv + 1 < mas->index) {
               ^~~~~~~~~~~~~~~~~~~~
   lib/maple_tree.c:2083:2: note: Taking false branch
           if (piv + 1 < mas->index) {
           ^
   lib/maple_tree.c:2097:6: note: Assuming field 'last' is < field 'max'
           if (mas->last >= mas->max)
               ^~~~~~~~~~~~~~~~~~~~~
   lib/maple_tree.c:2097:2: note: Taking false branch
           if (mas->last >= mas->max)
           ^
   lib/maple_tree.c:2102:6: note: Assuming 'piv' is > field 'last'
           if (piv > mas->last) {
               ^~~~~~~~~~~~~~~
   lib/maple_tree.c:2102:2: note: Taking true branch
           if (piv > mas->last) {
           ^
   lib/maple_tree.c:2103:7: note: Assuming the condition is true
                   if (piv == ULONG_MAX)
                       ^~~~~~~~~~~~~~~~
   lib/maple_tree.c:2103:3: note: Taking true branch
                   if (piv == ULONG_MAX)
                   ^
   lib/maple_tree.c:2104:4: note: 2nd function call argument is an uninitialized value
                           mas_bulk_rebalance(mas, b_node->b_end, wr_mas->type);
                           ^                       ~~~~~~~~~~~~~
>> lib/maple_tree.c:2785:2: warning: Value stored to 'last' is never read [clang-analyzer-deadcode.DeadStores]
           last = next = mas->node;
           ^      ~~~~~~~~~~~~~~~~
   lib/maple_tree.c:2785:2: note: Value stored to 'last' is never read
           last = next = mas->node;
           ^      ~~~~~~~~~~~~~~~~
>> lib/maple_tree.c:2786:2: warning: Value stored to 'prev_min' is never read [clang-analyzer-deadcode.DeadStores]
           prev_min = min = mas->min;
           ^          ~~~~~~~~~~~~~~
   lib/maple_tree.c:2786:2: note: Value stored to 'prev_min' is never read
           prev_min = min = mas->min;
           ^          ~~~~~~~~~~~~~~
>> lib/maple_tree.c:2801:4: warning: Value stored to 'max' is never read [clang-analyzer-deadcode.DeadStores]
                           max = pivots[offset];
                           ^     ~~~~~~~~~~~~~~
   lib/maple_tree.c:2801:4: note: Value stored to 'max' is never read
                           max = pivots[offset];
                           ^     ~~~~~~~~~~~~~~
>> lib/maple_tree.c:2985:2: warning: Address of stack memory associated with local variable 'destroy' is still referred to by the stack variable 'mast' upon returning to the caller.  This will be a dangling reference [clang-analyzer-core.StackAddressEscape]
           return mast->bn->b_end;
           ^
   lib/maple_tree.c:6226:6: note: Assuming the condition is false
           if (!mt_is_alloc(mt))
               ^~~~~~~~~~~~~~~~
   lib/maple_tree.c:6226:2: note: Taking false branch
           if (!mt_is_alloc(mt))
           ^
   lib/maple_tree.c:6229:6: note: '__ret_do_once' is false
           if (WARN_ON_ONCE(mt_is_reserved(entry)))
               ^
   include/asm-generic/bug.h:146:2: note: expanded from macro 'WARN_ON_ONCE'
           DO_ONCE_LITE_IF(condition, WARN_ON, 1)
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/once_lite.h:17:16: note: expanded from macro 'DO_ONCE_LITE_IF'
                   if (unlikely(__ret_do_once && !__already_done)) {       \
                                ^~~~~~~~~~~~~
   include/linux/compiler.h:78:42: note: expanded from macro 'unlikely'
   # define unlikely(x)    __builtin_expect(!!(x), 0)
                                               ^
   lib/maple_tree.c:6229:6: note: Left side of '&&' is false
           if (WARN_ON_ONCE(mt_is_reserved(entry)))
               ^
   include/asm-generic/bug.h:146:2: note: expanded from macro 'WARN_ON_ONCE'
           DO_ONCE_LITE_IF(condition, WARN_ON, 1)
           ^
   include/linux/once_lite.h:17:30: note: expanded from macro 'DO_ONCE_LITE_IF'
                   if (unlikely(__ret_do_once && !__already_done)) {       \
                                              ^
   lib/maple_tree.c:6229:6: note: Taking false branch
           if (WARN_ON_ONCE(mt_is_reserved(entry)))
               ^
   include/asm-generic/bug.h:146:2: note: expanded from macro 'WARN_ON_ONCE'
           DO_ONCE_LITE_IF(condition, WARN_ON, 1)
           ^
   include/linux/once_lite.h:17:3: note: expanded from macro 'DO_ONCE_LITE_IF'
                   if (unlikely(__ret_do_once && !__already_done)) {       \
                   ^
   lib/maple_tree.c:6229:2: note: Taking false branch
           if (WARN_ON_ONCE(mt_is_reserved(entry)))
           ^
   lib/maple_tree.c:6232:6: note: Assuming 'min' is < 'max'
           if (min >= max)
               ^~~~~~~~~~
   lib/maple_tree.c:6232:2: note: Taking false branch
           if (min >= max)
           ^
   lib/maple_tree.c:6235:6: note: Assuming the condition is false
           if (max < size - 1)
               ^~~~~~~~~~~~~~
   lib/maple_tree.c:6235:2: note: Taking false branch
           if (max < size - 1)
           ^
   lib/maple_tree.c:6238:6: note: Assuming 'size' is not equal to 0
           if (!size)
               ^~~~~
   lib/maple_tree.c:6238:2: note: Taking false branch
           if (!size)
           ^
   lib/maple_tree.c:6243:8: note: Calling 'mas_rev_alloc'
           ret = mas_rev_alloc(&mas, min, max, entry, size, startp);
                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   lib/maple_tree.c:5353:6: note: 'ret' is 0
           if (ret)
               ^~~
   lib/maple_tree.c:5353:2: note: Taking false branch
           if (ret)
           ^
   lib/maple_tree.c:5356:2: note: Taking false branch
           if (mas_is_err(mas))
           ^
   lib/maple_tree.c:5359:11: note: Field 'offset' is not equal to MAPLE_NODE_SLOTS
           if (mas->offset == MAPLE_NODE_SLOTS)
                    ^
   lib/maple_tree.c:5359:2: note: Taking false branch
           if (mas->offset == MAPLE_NODE_SLOTS)
           ^
   lib/maple_tree.c:5362:2: note: Calling 'mas_fill_gap'
           mas_fill_gap(mas, entry, mas->offset, size, index);
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   lib/maple_tree.c:5155:2: note: Calling 'mas_wr_store_entry'
           mas_wr_store_entry(&wr_mas);
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~
   lib/maple_tree.c:4262:7: note: Assuming field 'content' is null
           if ((wr_mas->content = mas_start(mas)) || mas_is_none(mas) ||
                ^~~~~~~~~~~~~~~
   lib/maple_tree.c:4262:6: note: Left side of '||' is false
           if ((wr_mas->content = mas_start(mas)) || mas_is_none(mas) ||
               ^
   lib/maple_tree.c:4262:6: note: Left side of '||' is false
   lib/maple_tree.c:4262:2: note: Taking false branch
           if ((wr_mas->content = mas_start(mas)) || mas_is_none(mas) ||
           ^
   lib/maple_tree.c:4268:2: note: Taking true branch
           if (unlikely(!mas_wr_walk(wr_mas))) {
           ^
   lib/maple_tree.c:4269:3: note: Calling 'mas_wr_spanning_store'
                   mas_wr_spanning_store(wr_mas);
                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   lib/maple_tree.c:3892:15: note: Assuming field 'index' is not equal to 0
           if (unlikely(!mas->index && mas->last == ULONG_MAX))
                        ^
   include/linux/compiler.h:78:42: note: expanded from macro 'unlikely'
   # define unlikely(x)    __builtin_expect(!!(x), 0)
                                               ^
   lib/maple_tree.c:3892:27: note: Left side of '&&' is false
           if (unlikely(!mas->index && mas->last == ULONG_MAX))
                                    ^
   lib/maple_tree.c:3892:2: note: Taking false branch
           if (unlikely(!mas->index && mas->last == ULONG_MAX))
           ^
   lib/maple_tree.c:3900:2: note: Taking false branch
           if (mas_is_err(mas))
           ^
   lib/maple_tree.c:3910:6: note: Assuming the condition is false
           if (r_mas.last + 1)
               ^~~~~~~~~~~~~~
   lib/maple_tree.c:3910:2: note: Taking false branch
           if (r_mas.last + 1)
           ^
   lib/maple_tree.c:3921:15: note: Field 'entry' is non-null
           if (!wr_mas->entry) {
                        ^
   lib/maple_tree.c:3921:2: note: Taking false branch
           if (!wr_mas->entry) {
           ^
   lib/maple_tree.c:3940:9: note: Calling 'mas_spanning_rebalance'
           return mas_spanning_rebalance(mas, &mast, height + 1);
                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   lib/maple_tree.c:2882:6: note: Assuming the condition is false
           if (!mas_is_root_limits(mas) &&
               ^~~~~~~~~~~~~~~~~~~~~~~~
   lib/maple_tree.c:2882:31: note: Left side of '&&' is false
           if (!mas_is_root_limits(mas) &&
                                        ^
   lib/maple_tree.c:2904:2: note: Loop condition is false. Execution continues on line 2955
           while (count--) {
           ^
   lib/maple_tree.c:2960:6: note: 'middle' is null
           if (middle)
               ^~~~~~
   lib/maple_tree.c:2960:2: note: Taking false branch
           if (middle)
           ^
   lib/maple_tree.c:2963:6: note: 'right' is null
           if (right)
               ^~~~~
   lib/maple_tree.c:2963:2: note: Taking false branch
           if (right)
           ^
   lib/maple_tree.c:2967:6: note: Assuming the condition is false
           if (mas_is_root_limits(mast->l))
               ^~~~~~~~~~~~~~~~~~~~~~~~~~~
   lib/maple_tree.c:2967:2: note: Taking false branch
           if (mas_is_root_limits(mast->l))
           ^
   lib/maple_tree.c:2972:2: note: Taking false branch
           if (!mte_dead_node(mast->orig_l->node))
           ^
   lib/maple_tree.c:2985:2: note: Address of stack memory associated with local variable 'destroy' is still referred to by the stack variable 'mast' upon returning to the caller.  This will be a dangling reference
           return mast->bn->b_end;
           ^
>> lib/maple_tree.c:2985:2: warning: Address of stack memory associated with local variable 'free' is still referred to by the stack variable 'mast' upon returning to the caller.  This will be a dangling reference [clang-analyzer-core.StackAddressEscape]
           return mast->bn->b_end;
           ^
   lib/maple_tree.c:6226:6: note: Assuming the condition is false
           if (!mt_is_alloc(mt))
               ^~~~~~~~~~~~~~~~
   lib/maple_tree.c:6226:2: note: Taking false branch
           if (!mt_is_alloc(mt))
           ^
   lib/maple_tree.c:6229:6: note: '__ret_do_once' is false
           if (WARN_ON_ONCE(mt_is_reserved(entry)))
               ^
   include/asm-generic/bug.h:146:2: note: expanded from macro 'WARN_ON_ONCE'
           DO_ONCE_LITE_IF(condition, WARN_ON, 1)
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/once_lite.h:17:16: note: expanded from macro 'DO_ONCE_LITE_IF'
                   if (unlikely(__ret_do_once && !__already_done)) {       \
                                ^~~~~~~~~~~~~
   include/linux/compiler.h:78:42: note: expanded from macro 'unlikely'
   # define unlikely(x)    __builtin_expect(!!(x), 0)
                                               ^
   lib/maple_tree.c:6229:6: note: Left side of '&&' is false
           if (WARN_ON_ONCE(mt_is_reserved(entry)))
               ^
   include/asm-generic/bug.h:146:2: note: expanded from macro 'WARN_ON_ONCE'
           DO_ONCE_LITE_IF(condition, WARN_ON, 1)
           ^
   include/linux/once_lite.h:17:30: note: expanded from macro 'DO_ONCE_LITE_IF'
                   if (unlikely(__ret_do_once && !__already_done)) {       \
                                              ^
   lib/maple_tree.c:6229:6: note: Taking false branch
           if (WARN_ON_ONCE(mt_is_reserved(entry)))
               ^
   include/asm-generic/bug.h:146:2: note: expanded from macro 'WARN_ON_ONCE'
           DO_ONCE_LITE_IF(condition, WARN_ON, 1)
           ^
   include/linux/once_lite.h:17:3: note: expanded from macro 'DO_ONCE_LITE_IF'
                   if (unlikely(__ret_do_once && !__already_done)) {       \
                   ^
   lib/maple_tree.c:6229:2: note: Taking false branch
           if (WARN_ON_ONCE(mt_is_reserved(entry)))
           ^
   lib/maple_tree.c:6232:6: note: Assuming 'min' is < 'max'
           if (min >= max)
               ^~~~~~~~~~
   lib/maple_tree.c:6232:2: note: Taking false branch
           if (min >= max)
           ^
   lib/maple_tree.c:6235:6: note: Assuming the condition is false
           if (max < size - 1)
               ^~~~~~~~~~~~~~
   lib/maple_tree.c:6235:2: note: Taking false branch
           if (max < size - 1)
           ^
   lib/maple_tree.c:6238:6: note: Assuming 'size' is not equal to 0
           if (!size)
               ^~~~~
   lib/maple_tree.c:6238:2: note: Taking false branch
           if (!size)
           ^
   lib/maple_tree.c:6243:8: note: Calling 'mas_rev_alloc'
           ret = mas_rev_alloc(&mas, min, max, entry, size, startp);
                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   lib/maple_tree.c:5353:6: note: 'ret' is 0
           if (ret)
               ^~~
   lib/maple_tree.c:5353:2: note: Taking false branch
           if (ret)
           ^
   lib/maple_tree.c:5356:2: note: Taking false branch
           if (mas_is_err(mas))
           ^
   lib/maple_tree.c:5359:11: note: Field 'offset' is not equal to MAPLE_NODE_SLOTS
           if (mas->offset == MAPLE_NODE_SLOTS)
                    ^
   lib/maple_tree.c:5359:2: note: Taking false branch
           if (mas->offset == MAPLE_NODE_SLOTS)
           ^
   lib/maple_tree.c:5362:2: note: Calling 'mas_fill_gap'
           mas_fill_gap(mas, entry, mas->offset, size, index);
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   lib/maple_tree.c:5155:2: note: Calling 'mas_wr_store_entry'
           mas_wr_store_entry(&wr_mas);
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~
   lib/maple_tree.c:4262:7: note: Assuming field 'content' is null
           if ((wr_mas->content = mas_start(mas)) || mas_is_none(mas) ||
                ^~~~~~~~~~~~~~~
   lib/maple_tree.c:4262:6: note: Left side of '||' is false
           if ((wr_mas->content = mas_start(mas)) || mas_is_none(mas) ||
               ^
   lib/maple_tree.c:4262:6: note: Left side of '||' is false
   lib/maple_tree.c:4262:2: note: Taking false branch
           if ((wr_mas->content = mas_start(mas)) || mas_is_none(mas) ||
           ^
   lib/maple_tree.c:4268:2: note: Taking true branch
           if (unlikely(!mas_wr_walk(wr_mas))) {
           ^
   lib/maple_tree.c:4269:3: note: Calling 'mas_wr_spanning_store'
                   mas_wr_spanning_store(wr_mas);
                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   lib/maple_tree.c:3892:15: note: Assuming field 'index' is not equal to 0
           if (unlikely(!mas->index && mas->last == ULONG_MAX))
                        ^
   include/linux/compiler.h:78:42: note: expanded from macro 'unlikely'
   # define unlikely(x)    __builtin_expect(!!(x), 0)
                                               ^
   lib/maple_tree.c:3892:27: note: Left side of '&&' is false
           if (unlikely(!mas->index && mas->last == ULONG_MAX))
                                    ^
   lib/maple_tree.c:3892:2: note: Taking false branch
           if (unlikely(!mas->index && mas->last == ULONG_MAX))
           ^
   lib/maple_tree.c:3900:2: note: Taking false branch
           if (mas_is_err(mas))
           ^
   lib/maple_tree.c:3910:6: note: Assuming the condition is false
           if (r_mas.last + 1)
               ^~~~~~~~~~~~~~
   lib/maple_tree.c:3910:2: note: Taking false branch
           if (r_mas.last + 1)
           ^
   lib/maple_tree.c:3921:15: note: Field 'entry' is non-null
           if (!wr_mas->entry) {
                        ^
   lib/maple_tree.c:3921:2: note: Taking false branch
           if (!wr_mas->entry) {
           ^
   lib/maple_tree.c:3940:9: note: Calling 'mas_spanning_rebalance'
           return mas_spanning_rebalance(mas, &mast, height + 1);
                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   lib/maple_tree.c:2882:6: note: Assuming the condition is false
           if (!mas_is_root_limits(mas) &&
               ^~~~~~~~~~~~~~~~~~~~~~~~
   lib/maple_tree.c:2882:31: note: Left side of '&&' is false
           if (!mas_is_root_limits(mas) &&
                                        ^
   lib/maple_tree.c:2904:2: note: Loop condition is false. Execution continues on line 2955
           while (count--) {
           ^
   lib/maple_tree.c:2960:6: note: 'middle' is null
           if (middle)
               ^~~~~~
   lib/maple_tree.c:2960:2: note: Taking false branch
           if (middle)
           ^
   lib/maple_tree.c:2963:6: note: 'right' is null
           if (right)
               ^~~~~
   lib/maple_tree.c:2963:2: note: Taking false branch
           if (right)
           ^
   lib/maple_tree.c:2967:6: note: Assuming the condition is false
           if (mas_is_root_limits(mast->l))
               ^~~~~~~~~~~~~~~~~~~~~~~~~~~
   lib/maple_tree.c:2967:2: note: Taking false branch
           if (mas_is_root_limits(mast->l))
           ^
   lib/maple_tree.c:2972:2: note: Taking false branch
           if (!mte_dead_node(mast->orig_l->node))
           ^
   lib/maple_tree.c:2985:2: note: Address of stack memory associated with local variable 'free' is still referred to by the stack variable 'mast' upon returning to the caller.  This will be a dangling reference
           return mast->bn->b_end;
           ^
>> lib/maple_tree.c:2985:2: warning: Address of stack memory associated with local variable 'l_mas' is still referred to by the stack variable 'mast' upon returning to the caller.  This will be a dangling reference [clang-analyzer-core.StackAddressEscape]
           return mast->bn->b_end;
           ^
   lib/maple_tree.c:6226:6: note: Assuming the condition is false
           if (!mt_is_alloc(mt))
               ^~~~~~~~~~~~~~~~
   lib/maple_tree.c:6226:2: note: Taking false branch
           if (!mt_is_alloc(mt))
           ^
   lib/maple_tree.c:6229:6: note: '__ret_do_once' is false
           if (WARN_ON_ONCE(mt_is_reserved(entry)))
               ^
   include/asm-generic/bug.h:146:2: note: expanded from macro 'WARN_ON_ONCE'
           DO_ONCE_LITE_IF(condition, WARN_ON, 1)
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/once_lite.h:17:16: note: expanded from macro 'DO_ONCE_LITE_IF'
                   if (unlikely(__ret_do_once && !__already_done)) {       \
                                ^~~~~~~~~~~~~
   include/linux/compiler.h:78:42: note: expanded from macro 'unlikely'
   # define unlikely(x)    __builtin_expect(!!(x), 0)
                                               ^
   lib/maple_tree.c:6229:6: note: Left side of '&&' is false
           if (WARN_ON_ONCE(mt_is_reserved(entry)))
               ^
   include/asm-generic/bug.h:146:2: note: expanded from macro 'WARN_ON_ONCE'
           DO_ONCE_LITE_IF(condition, WARN_ON, 1)
           ^
   include/linux/once_lite.h:17:30: note: expanded from macro 'DO_ONCE_LITE_IF'
                   if (unlikely(__ret_do_once && !__already_done)) {       \
                                              ^
   lib/maple_tree.c:6229:6: note: Taking false branch
           if (WARN_ON_ONCE(mt_is_reserved(entry)))
               ^
   include/asm-generic/bug.h:146:2: note: expanded from macro 'WARN_ON_ONCE'
           DO_ONCE_LITE_IF(condition, WARN_ON, 1)
           ^
   include/linux/once_lite.h:17:3: note: expanded from macro 'DO_ONCE_LITE_IF'
                   if (unlikely(__ret_do_once && !__already_done)) {       \
                   ^
   lib/maple_tree.c:6229:2: note: Taking false branch
           if (WARN_ON_ONCE(mt_is_reserved(entry)))
           ^
   lib/maple_tree.c:6232:6: note: Assuming 'min' is < 'max'
           if (min >= max)
               ^~~~~~~~~~
   lib/maple_tree.c:6232:2: note: Taking false branch
           if (min >= max)
           ^
   lib/maple_tree.c:6235:6: note: Assuming the condition is false
           if (max < size - 1)
               ^~~~~~~~~~~~~~
   lib/maple_tree.c:6235:2: note: Taking false branch
           if (max < size - 1)
           ^
   lib/maple_tree.c:6238:6: note: Assuming 'size' is not equal to 0
           if (!size)
               ^~~~~
   lib/maple_tree.c:6238:2: note: Taking false branch
           if (!size)
           ^
   lib/maple_tree.c:6243:8: note: Calling 'mas_rev_alloc'
           ret = mas_rev_alloc(&mas, min, max, entry, size, startp);
                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   lib/maple_tree.c:5353:6: note: 'ret' is 0
           if (ret)
               ^~~
   lib/maple_tree.c:5353:2: note: Taking false branch
           if (ret)
           ^
   lib/maple_tree.c:5356:2: note: Taking false branch
           if (mas_is_err(mas))
           ^
   lib/maple_tree.c:5359:11: note: Field 'offset' is not equal to MAPLE_NODE_SLOTS
           if (mas->offset == MAPLE_NODE_SLOTS)
                    ^
   lib/maple_tree.c:5359:2: note: Taking false branch
           if (mas->offset == MAPLE_NODE_SLOTS)
           ^
   lib/maple_tree.c:5362:2: note: Calling 'mas_fill_gap'
           mas_fill_gap(mas, entry, mas->offset, size, index);
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   lib/maple_tree.c:5155:2: note: Calling 'mas_wr_store_entry'
           mas_wr_store_entry(&wr_mas);
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~
   lib/maple_tree.c:4262:7: note: Assuming field 'content' is null
           if ((wr_mas->content = mas_start(mas)) || mas_is_none(mas) ||
                ^~~~~~~~~~~~~~~
   lib/maple_tree.c:4262:6: note: Left side of '||' is false
           if ((wr_mas->content = mas_start(mas)) || mas_is_none(mas) ||
               ^
   lib/maple_tree.c:4262:6: note: Left side of '||' is false
   lib/maple_tree.c:4262:2: note: Taking false branch
           if ((wr_mas->content = mas_start(mas)) || mas_is_none(mas) ||
           ^
   lib/maple_tree.c:4268:2: note: Taking true branch
           if (unlikely(!mas_wr_walk(wr_mas))) {
           ^
   lib/maple_tree.c:4269:3: note: Calling 'mas_wr_spanning_store'
                   mas_wr_spanning_store(wr_mas);
                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   lib/maple_tree.c:3892:15: note: Assuming field 'index' is not equal to 0
           if (unlikely(!mas->index && mas->last == ULONG_MAX))
                        ^
   include/linux/compiler.h:78:42: note: expanded from macro 'unlikely'
   # define unlikely(x)    __builtin_expect(!!(x), 0)
                                               ^
   lib/maple_tree.c:3892:27: note: Left side of '&&' is false
           if (unlikely(!mas->index && mas->last == ULONG_MAX))
                                    ^
   lib/maple_tree.c:3892:2: note: Taking false branch
           if (unlikely(!mas->index && mas->last == ULONG_MAX))
           ^
   lib/maple_tree.c:3900:2: note: Taking false branch
           if (mas_is_err(mas))
           ^
   lib/maple_tree.c:3910:6: note: Assuming the condition is false
           if (r_mas.last + 1)
               ^~~~~~~~~~~~~~
   lib/maple_tree.c:3910:2: note: Taking false branch
           if (r_mas.last + 1)
           ^
   lib/maple_tree.c:3921:15: note: Field 'entry' is non-null
           if (!wr_mas->entry) {
                        ^
   lib/maple_tree.c:3921:2: note: Taking false branch
           if (!wr_mas->entry) {
           ^
   lib/maple_tree.c:3940:9: note: Calling 'mas_spanning_rebalance'
           return mas_spanning_rebalance(mas, &mast, height + 1);
                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   lib/maple_tree.c:2882:6: note: Assuming the condition is false
           if (!mas_is_root_limits(mas) &&
               ^~~~~~~~~~~~~~~~~~~~~~~~
   lib/maple_tree.c:2882:31: note: Left side of '&&' is false
           if (!mas_is_root_limits(mas) &&
                                        ^
   lib/maple_tree.c:2904:2: note: Loop condition is false. Execution continues on line 2955
           while (count--) {
           ^
   lib/maple_tree.c:2960:6: note: 'middle' is null
           if (middle)
               ^~~~~~
   lib/maple_tree.c:2960:2: note: Taking false branch
           if (middle)
           ^
   lib/maple_tree.c:2963:6: note: 'right' is null
           if (right)
               ^~~~~
   lib/maple_tree.c:2963:2: note: Taking false branch
           if (right)
           ^
   lib/maple_tree.c:2967:6: note: Assuming the condition is false
           if (mas_is_root_limits(mast->l))
               ^~~~~~~~~~~~~~~~~~~~~~~~~~~
   lib/maple_tree.c:2967:2: note: Taking false branch
           if (mas_is_root_limits(mast->l))
           ^
   lib/maple_tree.c:2972:2: note: Taking false branch
           if (!mte_dead_node(mast->orig_l->node))
           ^
   lib/maple_tree.c:2985:2: note: Address of stack memory associated with local variable 'l_mas' is still referred to by the stack variable 'mast' upon returning to the caller.  This will be a dangling reference
           return mast->bn->b_end;
           ^
>> lib/maple_tree.c:2985:2: warning: Address of stack memory associated with local variable 'm_mas' is still referred to by the stack variable 'mast' upon returning to the caller.  This will be a dangling reference [clang-analyzer-core.StackAddressEscape]
           return mast->bn->b_end;
           ^
   lib/maple_tree.c:6226:6: note: Assuming the condition is false
           if (!mt_is_alloc(mt))
               ^~~~~~~~~~~~~~~~
   lib/maple_tree.c:6226:2: note: Taking false branch
           if (!mt_is_alloc(mt))
           ^
   lib/maple_tree.c:6229:6: note: '__ret_do_once' is false
           if (WARN_ON_ONCE(mt_is_reserved(entry)))
               ^
   include/asm-generic/bug.h:146:2: note: expanded from macro 'WARN_ON_ONCE'
           DO_ONCE_LITE_IF(condition, WARN_ON, 1)
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/once_lite.h:17:16: note: expanded from macro 'DO_ONCE_LITE_IF'
                   if (unlikely(__ret_do_once && !__already_done)) {       \
                                ^~~~~~~~~~~~~
   include/linux/compiler.h:78:42: note: expanded from macro 'unlikely'
   # define unlikely(x)    __builtin_expect(!!(x), 0)
                                               ^
   lib/maple_tree.c:6229:6: note: Left side of '&&' is false
           if (WARN_ON_ONCE(mt_is_reserved(entry)))
               ^
   include/asm-generic/bug.h:146:2: note: expanded from macro 'WARN_ON_ONCE'
           DO_ONCE_LITE_IF(condition, WARN_ON, 1)
           ^
   include/linux/once_lite.h:17:30: note: expanded from macro 'DO_ONCE_LITE_IF'
                   if (unlikely(__ret_do_once && !__already_done)) {       \
                                              ^
   lib/maple_tree.c:6229:6: note: Taking false branch
           if (WARN_ON_ONCE(mt_is_reserved(entry)))
               ^
   include/asm-generic/bug.h:146:2: note: expanded from macro 'WARN_ON_ONCE'
           DO_ONCE_LITE_IF(condition, WARN_ON, 1)
           ^
   include/linux/once_lite.h:17:3: note: expanded from macro 'DO_ONCE_LITE_IF'
                   if (unlikely(__ret_do_once && !__already_done)) {       \
                   ^
   lib/maple_tree.c:6229:2: note: Taking false branch
           if (WARN_ON_ONCE(mt_is_reserved(entry)))
           ^
   lib/maple_tree.c:6232:6: note: Assuming 'min' is < 'max'
           if (min >= max)
               ^~~~~~~~~~
   lib/maple_tree.c:6232:2: note: Taking false branch
           if (min >= max)
           ^
   lib/maple_tree.c:6235:6: note: Assuming the condition is false
           if (max < size - 1)
               ^~~~~~~~~~~~~~
   lib/maple_tree.c:6235:2: note: Taking false branch
           if (max < size - 1)
           ^
   lib/maple_tree.c:6238:6: note: Assuming 'size' is not equal to 0
           if (!size)
               ^~~~~
   lib/maple_tree.c:6238:2: note: Taking false branch
           if (!size)
           ^
   lib/maple_tree.c:6243:8: note: Calling 'mas_rev_alloc'
           ret = mas_rev_alloc(&mas, min, max, entry, size, startp);
                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   lib/maple_tree.c:5353:6: note: 'ret' is 0
           if (ret)
               ^~~
   lib/maple_tree.c:5353:2: note: Taking false branch
           if (ret)
           ^
   lib/maple_tree.c:5356:2: note: Taking false branch
           if (mas_is_err(mas))
           ^
   lib/maple_tree.c:5359:11: note: Field 'offset' is not equal to MAPLE_NODE_SLOTS
           if (mas->offset == MAPLE_NODE_SLOTS)
                    ^
   lib/maple_tree.c:5359:2: note: Taking false branch
           if (mas->offset == MAPLE_NODE_SLOTS)
           ^
   lib/maple_tree.c:5362:2: note: Calling 'mas_fill_gap'
           mas_fill_gap(mas, entry, mas->offset, size, index);
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   lib/maple_tree.c:5155:2: note: Calling 'mas_wr_store_entry'
           mas_wr_store_entry(&wr_mas);
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~
   lib/maple_tree.c:4262:7: note: Assuming field 'content' is null
           if ((wr_mas->content = mas_start(mas)) || mas_is_none(mas) ||
                ^~~~~~~~~~~~~~~
   lib/maple_tree.c:4262:6: note: Left side of '||' is false
           if ((wr_mas->content = mas_start(mas)) || mas_is_none(mas) ||
               ^
   lib/maple_tree.c:4262:6: note: Left side of '||' is false
   lib/maple_tree.c:4262:2: note: Taking false branch
           if ((wr_mas->content = mas_start(mas)) || mas_is_none(mas) ||
           ^
   lib/maple_tree.c:4268:2: note: Taking true branch
           if (unlikely(!mas_wr_walk(wr_mas))) {
           ^
   lib/maple_tree.c:4269:3: note: Calling 'mas_wr_spanning_store'
                   mas_wr_spanning_store(wr_mas);
                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   lib/maple_tree.c:3892:15: note: Assuming field 'index' is not equal to 0
           if (unlikely(!mas->index && mas->last == ULONG_MAX))
                        ^
   include/linux/compiler.h:78:42: note: expanded from macro 'unlikely'
   # define unlikely(x)    __builtin_expect(!!(x), 0)
                                               ^
   lib/maple_tree.c:3892:27: note: Left side of '&&' is false
           if (unlikely(!mas->index && mas->last == ULONG_MAX))
                                    ^
   lib/maple_tree.c:3892:2: note: Taking false branch
           if (unlikely(!mas->index && mas->last == ULONG_MAX))
           ^
   lib/maple_tree.c:3900:2: note: Taking false branch
           if (mas_is_err(mas))
           ^
   lib/maple_tree.c:3910:6: note: Assuming the condition is false
           if (r_mas.last + 1)
               ^~~~~~~~~~~~~~
   lib/maple_tree.c:3910:2: note: Taking false branch
           if (r_mas.last + 1)
           ^
   lib/maple_tree.c:3921:15: note: Field 'entry' is non-null
           if (!wr_mas->entry) {
                        ^
   lib/maple_tree.c:3921:2: note: Taking false branch
           if (!wr_mas->entry) {
           ^
   lib/maple_tree.c:3940:9: note: Calling 'mas_spanning_rebalance'
           return mas_spanning_rebalance(mas, &mast, height + 1);
                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   lib/maple_tree.c:2882:6: note: Assuming the condition is false
           if (!mas_is_root_limits(mas) &&
               ^~~~~~~~~~~~~~~~~~~~~~~~
   lib/maple_tree.c:2882:31: note: Left side of '&&' is false
           if (!mas_is_root_limits(mas) &&
                                        ^
   lib/maple_tree.c:2904:2: note: Loop condition is false. Execution continues on line 2955
           while (count--) {
           ^
   lib/maple_tree.c:2960:6: note: 'middle' is null
           if (middle)
               ^~~~~~
   lib/maple_tree.c:2960:2: note: Taking false branch
           if (middle)
           ^
   lib/maple_tree.c:2963:6: note: 'right' is null
           if (right)
               ^~~~~
   lib/maple_tree.c:2963:2: note: Taking false branch
           if (right)
           ^
   lib/maple_tree.c:2967:6: note: Assuming the condition is false
           if (mas_is_root_limits(mast->l))
               ^~~~~~~~~~~~~~~~~~~~~~~~~~~
   lib/maple_tree.c:2967:2: note: Taking false branch
           if (mas_is_root_limits(mast->l))
           ^
   lib/maple_tree.c:2972:2: note: Taking false branch
           if (!mte_dead_node(mast->orig_l->node))
           ^
   lib/maple_tree.c:2985:2: note: Address of stack memory associated with local variable 'm_mas' is still referred to by the stack variable 'mast' upon returning to the caller.  This will be a dangling reference
           return mast->bn->b_end;
           ^
>> lib/maple_tree.c:2985:2: warning: Address of stack memory associated with local variable 'r_mas' is still referred to by the stack variable 'mast' upon returning to the caller.  This will be a dangling reference [clang-analyzer-core.StackAddressEscape]
           return mast->bn->b_end;
           ^
   lib/maple_tree.c:6226:6: note: Assuming the condition is false
           if (!mt_is_alloc(mt))
               ^~~~~~~~~~~~~~~~
   lib/maple_tree.c:6226:2: note: Taking false branch
           if (!mt_is_alloc(mt))
           ^
   lib/maple_tree.c:6229:6: note: '__ret_do_once' is false
           if (WARN_ON_ONCE(mt_is_reserved(entry)))
               ^
   include/asm-generic/bug.h:146:2: note: expanded from macro 'WARN_ON_ONCE'
           DO_ONCE_LITE_IF(condition, WARN_ON, 1)
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/once_lite.h:17:16: note: expanded from macro 'DO_ONCE_LITE_IF'
                   if (unlikely(__ret_do_once && !__already_done)) {       \
                                ^~~~~~~~~~~~~
   include/linux/compiler.h:78:42: note: expanded from macro 'unlikely'
   # define unlikely(x)    __builtin_expect(!!(x), 0)
                                               ^
   lib/maple_tree.c:6229:6: note: Left side of '&&' is false
           if (WARN_ON_ONCE(mt_is_reserved(entry)))
               ^
   include/asm-generic/bug.h:146:2: note: expanded from macro 'WARN_ON_ONCE'
           DO_ONCE_LITE_IF(condition, WARN_ON, 1)
           ^
   include/linux/once_lite.h:17:30: note: expanded from macro 'DO_ONCE_LITE_IF'
                   if (unlikely(__ret_do_once && !__already_done)) {       \
                                              ^
   lib/maple_tree.c:6229:6: note: Taking false branch
           if (WARN_ON_ONCE(mt_is_reserved(entry)))
               ^
   include/asm-generic/bug.h:146:2: note: expanded from macro 'WARN_ON_ONCE'
           DO_ONCE_LITE_IF(condition, WARN_ON, 1)
           ^
   include/linux/once_lite.h:17:3: note: expanded from macro 'DO_ONCE_LITE_IF'
                   if (unlikely(__ret_do_once && !__already_done)) {       \
                   ^
   lib/maple_tree.c:6229:2: note: Taking false branch
           if (WARN_ON_ONCE(mt_is_reserved(entry)))
           ^
   lib/maple_tree.c:6232:6: note: Assuming 'min' is < 'max'
           if (min >= max)
               ^~~~~~~~~~
   lib/maple_tree.c:6232:2: note: Taking false branch
           if (min >= max)
           ^
   lib/maple_tree.c:6235:6: note: Assuming the condition is false
           if (max < size - 1)
               ^~~~~~~~~~~~~~
   lib/maple_tree.c:6235:2: note: Taking false branch
           if (max < size - 1)
           ^
   lib/maple_tree.c:6238:6: note: Assuming 'size' is not equal to 0
           if (!size)
               ^~~~~
   lib/maple_tree.c:6238:2: note: Taking false branch
           if (!size)
           ^
   lib/maple_tree.c:6243:8: note: Calling 'mas_rev_alloc'
           ret = mas_rev_alloc(&mas, min, max, entry, size, startp);
                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   lib/maple_tree.c:5353:6: note: 'ret' is 0
           if (ret)
               ^~~
   lib/maple_tree.c:5353:2: note: Taking false branch
           if (ret)
           ^
   lib/maple_tree.c:5356:2: note: Taking false branch
           if (mas_is_err(mas))
           ^
   lib/maple_tree.c:5359:11: note: Field 'offset' is not equal to MAPLE_NODE_SLOTS
           if (mas->offset == MAPLE_NODE_SLOTS)
                    ^
   lib/maple_tree.c:5359:2: note: Taking false branch
           if (mas->offset == MAPLE_NODE_SLOTS)
           ^
   lib/maple_tree.c:5362:2: note: Calling 'mas_fill_gap'
           mas_fill_gap(mas, entry, mas->offset, size, index);
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   lib/maple_tree.c:5155:2: note: Calling 'mas_wr_store_entry'
           mas_wr_store_entry(&wr_mas);
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~
   lib/maple_tree.c:4262:7: note: Assuming field 'content' is null
           if ((wr_mas->content = mas_start(mas)) || mas_is_none(mas) ||
                ^~~~~~~~~~~~~~~
   lib/maple_tree.c:4262:6: note: Left side of '||' is false
           if ((wr_mas->content = mas_start(mas)) || mas_is_none(mas) ||
               ^
   lib/maple_tree.c:4262:6: note: Left side of '||' is false
   lib/maple_tree.c:4262:2: note: Taking false branch
           if ((wr_mas->content = mas_start(mas)) || mas_is_none(mas) ||
           ^
   lib/maple_tree.c:4268:2: note: Taking true branch
           if (unlikely(!mas_wr_walk(wr_mas))) {
           ^
   lib/maple_tree.c:4269:3: note: Calling 'mas_wr_spanning_store'
                   mas_wr_spanning_store(wr_mas);
                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   lib/maple_tree.c:3892:15: note: Assuming field 'index' is not equal to 0
           if (unlikely(!mas->index && mas->last == ULONG_MAX))
                        ^
   include/linux/compiler.h:78:42: note: expanded from macro 'unlikely'
   # define unlikely(x)    __builtin_expect(!!(x), 0)
                                               ^
   lib/maple_tree.c:3892:27: note: Left side of '&&' is false
           if (unlikely(!mas->index && mas->last == ULONG_MAX))
                                    ^
   lib/maple_tree.c:3892:2: note: Taking false branch
           if (unlikely(!mas->index && mas->last == ULONG_MAX))
           ^
   lib/maple_tree.c:3900:2: note: Taking false branch
           if (mas_is_err(mas))
           ^
   lib/maple_tree.c:3910:6: note: Assuming the condition is false
           if (r_mas.last + 1)
               ^~~~~~~~~~~~~~
   lib/maple_tree.c:3910:2: note: Taking false branch
           if (r_mas.last + 1)
           ^
   lib/maple_tree.c:3921:15: note: Field 'entry' is non-null
           if (!wr_mas->entry) {
                        ^
   lib/maple_tree.c:3921:2: note: Taking false branch
           if (!wr_mas->entry) {
           ^
   lib/maple_tree.c:3940:9: note: Calling 'mas_spanning_rebalance'
           return mas_spanning_rebalance(mas, &mast, height + 1);
                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   lib/maple_tree.c:2882:6: note: Assuming the condition is false
           if (!mas_is_root_limits(mas) &&
               ^~~~~~~~~~~~~~~~~~~~~~~~
   lib/maple_tree.c:2882:31: note: Left side of '&&' is false
           if (!mas_is_root_limits(mas) &&
                                        ^
   lib/maple_tree.c:2904:2: note: Loop condition is false. Execution continues on line 2955
           while (count--) {
           ^
   lib/maple_tree.c:2960:6: note: 'middle' is null
           if (middle)
               ^~~~~~
   lib/maple_tree.c:2960:2: note: Taking false branch
           if (middle)
           ^
   lib/maple_tree.c:2963:6: note: 'right' is null
           if (right)
               ^~~~~
   lib/maple_tree.c:2963:2: note: Taking false branch
           if (right)
           ^
   lib/maple_tree.c:2967:6: note: Assuming the condition is false
           if (mas_is_root_limits(mast->l))
               ^~~~~~~~~~~~~~~~~~~~~~~~~~~
   lib/maple_tree.c:2967:2: note: Taking false branch
           if (mas_is_root_limits(mast->l))
           ^
   lib/maple_tree.c:2972:2: note: Taking false branch
           if (!mte_dead_node(mast->orig_l->node))
           ^
   lib/maple_tree.c:2985:2: note: Address of stack memory associated with local variable 'r_mas' is still referred to by the stack variable 'mast' upon returning to the caller.  This will be a dangling reference
           return mast->bn->b_end;
           ^
>> lib/maple_tree.c:4979:5: warning: Value stored to 'count' is never read [clang-analyzer-deadcode.DeadStores]
                                   count = mt_slots[type];
                                   ^       ~~~~~~~~~~~~~~
   lib/maple_tree.c:4979:5: note: Value stored to 'count' is never read
                                   count = mt_slots[type];
                                   ^       ~~~~~~~~~~~~~~
   Suppressed 12 warnings (2 in non-user code, 10 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.
   4 warnings generated.
   fs/ioctl.c:212:29: warning: The left operand of '>' is a garbage value [clang-analyzer-core.UndefinedBinaryOperatorResult]
           if (fiemap.fm_extent_count > FIEMAP_MAX_EXTENTS)
                                      ^
   fs/ioctl.c:860:1: note: Calling '__do_sys_ioctl'
   SYSCALL_DEFINE3(ioctl, unsigned int, fd, unsigned int, cmd, unsigned long, arg)
   ^
   include/linux/syscalls.h:219:36: note: expanded from macro 'SYSCALL_DEFINE3'
   #define SYSCALL_DEFINE3(name, ...) SYSCALL_DEFINEx(3, _##name, __VA_ARGS__)
                                      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/syscalls.h:228:2: note: expanded from macro 'SYSCALL_DEFINEx'
           __SYSCALL_DEFINEx(x, sname, __VA_ARGS__)
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/syscalls.h:249:14: note: expanded from macro '__SYSCALL_DEFINEx'
                   long ret = __do_sys##name(__MAP(x,__SC_CAST,__VA_ARGS__));\
                              ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   note: expanded from here
   fs/ioctl.c:865:6: note: Assuming field 'file' is non-null
           if (!f.file)
               ^~~~~~~
   fs/ioctl.c:865:2: note: Taking false branch
           if (!f.file)
           ^
   fs/ioctl.c:869:6: note: 'error' is 0
           if (error)
               ^~~~~
   fs/ioctl.c:869:2: note: Taking false branch
           if (error)
           ^
   fs/ioctl.c:872:10: note: Calling 'do_vfs_ioctl'
           error = do_vfs_ioctl(f.file, fd, cmd, arg);
                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   fs/ioctl.c:782:2: note: Control jumps to 'case 3223348747:'  at line 813
           switch (cmd) {
           ^
   fs/ioctl.c:814:10: note: Calling 'ioctl_fiemap'
                   return ioctl_fiemap(filp, argp);
                          ^~~~~~~~~~~~~~~~~~~~~~~~
   fs/ioctl.c:206:6: note: Assuming field 'fiemap' is non-null
           if (!inode->i_op->fiemap)
               ^~~~~~~~~~~~~~~~~~~~
   fs/ioctl.c:206:2: note: Taking false branch
           if (!inode->i_op->fiemap)
           ^
   fs/ioctl.c:209:6: note: Calling 'copy_from_user'
           if (copy_from_user(&fiemap, ufiemap, sizeof(fiemap)))
               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/uaccess.h:191:2: note: Taking true branch
           if (likely(check_copy_size(to, n, false)))
           ^
   include/linux/uaccess.h:192:7: note: Calling '_copy_from_user'
                   n = _copy_from_user(to, from, n);
                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/uaccess.h:157:6: note: Assuming the condition is true
           if (!should_fail_usercopy() && likely(access_ok(from, n))) {
               ^~~~~~~~~~~~~~~~~~~~~~~
   include/linux/uaccess.h:157:6: note: Left side of '&&' is true
   include/linux/uaccess.h:157:40: note: Assuming the condition is false
           if (!should_fail_usercopy() && likely(access_ok(from, n))) {
                                                 ^
   arch/mips/include/asm/uaccess.h:88:2: note: expanded from macro 'access_ok'
           likely(__access_ok((addr), (size)))
           ^
   include/linux/compiler.h:77:38: note: expanded from macro 'likely'
   # define likely(x)      __builtin_expect(!!(x), 1)
                                             ^
   include/linux/compiler.h:77:40: note: expanded from macro 'likely'
   # define likely(x)      __builtin_expect(!!(x), 1)
                                               ^
   include/linux/uaccess.h:157:2: note: Taking true branch
           if (!should_fail_usercopy() && likely(access_ok(from, n))) {
           ^
   include/linux/uaccess.h:159:9: note: Calling 'raw_copy_from_user'
                   res = raw_copy_from_user(to, from, n);
                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   arch/mips/include/asm/uaccess.h:455:2: note: Returning without writing to 'to->fm_extent_count'
           return __cu_len_r;
           ^
   include/linux/uaccess.h:159:9: note: Returning from 'raw_copy_from_user'
                   res = raw_copy_from_user(to, from, n);
                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/uaccess.h:161:6: note: Assuming 'res' is 0, which participates in a condition later
           if (unlikely(res))
               ^
   include/linux/compiler.h:78:40: note: expanded from macro 'unlikely'
   # define unlikely(x)    __builtin_expect(!!(x), 0)
                                             ^~~~
   include/linux/uaccess.h:161:2: note: Taking false branch
           if (unlikely(res))
           ^
   include/linux/uaccess.h:163:2: note: Returning without writing to 'to->fm_extent_count'
           return res;
           ^

vim +/node +319 lib/maple_tree.c

18a91233bf966f Liam R. Howlett 2020-07-24  316  
18a91233bf966f Liam R. Howlett 2020-07-24  317  static inline void mte_set_full(const struct maple_enode *node)
18a91233bf966f Liam R. Howlett 2020-07-24  318  {
18a91233bf966f Liam R. Howlett 2020-07-24 @319  	node = (void *)((unsigned long)node & ~MAPLE_ENODE_NULL);
18a91233bf966f Liam R. Howlett 2020-07-24  320  }
18a91233bf966f Liam R. Howlett 2020-07-24  321  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

                 reply	other threads:[~2022-02-18  5:40 UTC|newest]

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

Reply instructions:

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

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

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

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

  git send-email \
    --in-reply-to=202202181304.SQLFm9Xy-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=kbuild@lists.01.org \
    /path/to/YOUR_REPLY

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

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