CC: [email protected]
CC: [email protected]
BCC: [email protected]
CC: [email protected]
TO: Mika Westerberg <[email protected]>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 
master
head:   9137eda53752ef73148e42b0d7640a00f1bc96b1
commit: 15a4c7e8f916f4826b0bb541663798af3a1294bd thunderbolt: Add KUnit tests 
for XDomain properties
date:   12 months ago
:::::: branch date: 25 hours ago
:::::: commit date: 12 months ago
config: i386-randconfig-c001-20220221 
(https://download.01.org/0day-ci/archive/20220227/[email protected]/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
        # 
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=15a4c7e8f916f4826b0bb541663798af3a1294bd
        git remote add linus 
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
        git fetch --no-tags linus master
        git checkout 15a4c7e8f916f4826b0bb541663798af3a1294bd
        # save the config file to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=i386 
clang-analyzer 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <[email protected]>


clang-analyzer warnings: (new ones prefixed by >>)
           ^
   include/kunit/test.h:774:24: note: expanded from macro 
'KUNIT_BASE_BINARY_ASSERTION'
                                       ...)                                     
  \
                                                                                
  ^
   drivers/thunderbolt/test.c:1510:2: note: Loop condition is false.  Exiting 
loop
           KUNIT_EXPECT_PTR_EQ(test, tunnel1->paths[1]->hops[1].out_port, down);
           ^
   include/kunit/test.h:1286:2: note: expanded from macro 'KUNIT_EXPECT_PTR_EQ'
           KUNIT_BINARY_PTR_EQ_ASSERTION(test,                                  
  \
           ^
   include/kunit/test.h:923:2: note: expanded from macro 
'KUNIT_BINARY_PTR_EQ_ASSERTION'
           KUNIT_BINARY_PTR_EQ_MSG_ASSERTION(test,                              
  \
           ^
   include/kunit/test.h:913:2: note: expanded from macro 
'KUNIT_BINARY_PTR_EQ_MSG_ASSERTION'
           KUNIT_BASE_EQ_MSG_ASSERTION(test,                                    
  \
           ^
   include/kunit/test.h:802:2: note: expanded from macro 
'KUNIT_BASE_EQ_MSG_ASSERTION'
           KUNIT_BASE_BINARY_ASSERTION(test,                                    
  \
           ^
   include/kunit/test.h:780:2: note: expanded from macro 
'KUNIT_BASE_BINARY_ASSERTION'
           KUNIT_ASSERTION(test,                                                
  \
           ^
   include/kunit/test.h:679:74: note: expanded from macro 'KUNIT_ASSERTION'
   #define KUNIT_ASSERTION(test, pass, assert_class, INITIALIZER, fmt, ...) do 
{  \
                                                                            ^
   drivers/thunderbolt/test.c:1510:2: note: Loop condition is false.  Exiting 
loop
           KUNIT_EXPECT_PTR_EQ(test, tunnel1->paths[1]->hops[1].out_port, down);
           ^
   include/kunit/test.h:1286:2: note: expanded from macro 'KUNIT_EXPECT_PTR_EQ'
           KUNIT_BINARY_PTR_EQ_ASSERTION(test,                                  
  \
           ^
   include/kunit/test.h:923:2: note: expanded from macro 
'KUNIT_BINARY_PTR_EQ_ASSERTION'
           KUNIT_BINARY_PTR_EQ_MSG_ASSERTION(test,                              
  \
           ^
   include/kunit/test.h:913:2: note: expanded from macro 
'KUNIT_BINARY_PTR_EQ_MSG_ASSERTION'
           KUNIT_BASE_EQ_MSG_ASSERTION(test,                                    
  \
           ^
   include/kunit/test.h:802:2: note: expanded from macro 
'KUNIT_BASE_EQ_MSG_ASSERTION'
           KUNIT_BASE_BINARY_ASSERTION(test,                                    
  \
           ^
   include/kunit/test.h:774:24: note: expanded from macro 
'KUNIT_BASE_BINARY_ASSERTION'
                                       ...)                                     
  \
                                                                                
  ^
   drivers/thunderbolt/test.c:1514:2: note: Value assigned to 'tunnel2'
           tunnel2 = tb_tunnel_alloc_usb3(NULL, up, down, 0, 0);
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/thunderbolt/test.c:1515:26: note: Assuming 'tunnel2' is equal to null
           KUNIT_ASSERT_TRUE(test, tunnel2 != NULL);
                                   ^
   include/kunit/test.h:1513:46: note: expanded from macro 'KUNIT_ASSERT_TRUE'
           KUNIT_TRUE_ASSERTION(test, KUNIT_ASSERTION, condition)
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~
   include/kunit/test.h:739:46: note: expanded from macro 'KUNIT_TRUE_ASSERTION'
           KUNIT_TRUE_MSG_ASSERTION(test, assert_type, condition, NULL)
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~
   include/kunit/test.h:733:10: note: expanded from macro 
'KUNIT_TRUE_MSG_ASSERTION'
                                 condition,                                     
  \
   
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/kunit/test.h:721:7: note: expanded from macro 'KUNIT_UNARY_ASSERTION'
                           !!(condition) == !!expected_true,                    
  \
   
~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/kunit/test.h:683:7: note: expanded from macro 'KUNIT_ASSERTION'
                              pass,                                             
  \
                              ^~~~
   drivers/thunderbolt/test.c:1515:2: note: Loop condition is false.  Exiting 
loop
           KUNIT_ASSERT_TRUE(test, tunnel2 != NULL);
           ^
   include/kunit/test.h:1513:2: note: expanded from macro 'KUNIT_ASSERT_TRUE'
           KUNIT_TRUE_ASSERTION(test, KUNIT_ASSERTION, condition)
           ^
   include/kunit/test.h:739:2: note: expanded from macro 'KUNIT_TRUE_ASSERTION'
           KUNIT_TRUE_MSG_ASSERTION(test, assert_type, condition, NULL)
           ^
   include/kunit/test.h:731:2: note: expanded from macro 
'KUNIT_TRUE_MSG_ASSERTION'
           KUNIT_UNARY_ASSERTION(test,                                          
  \
           ^
   include/kunit/test.h:720:2: note: expanded from macro 'KUNIT_UNARY_ASSERTION'
           KUNIT_ASSERTION(test,                                                
  \
           ^
   include/kunit/test.h:679:74: note: expanded from macro 'KUNIT_ASSERTION'
   #define KUNIT_ASSERTION(test, pass, assert_class, INITIALIZER, fmt, ...) do 
{  \
                                                                            ^
   drivers/thunderbolt/test.c:1516:2: note: Access to field 'type' results in a 
dereference of a null pointer (loaded from variable 'tunnel2')
           KUNIT_EXPECT_EQ(test, tunnel2->type, (enum 
tb_tunnel_type)TB_TUNNEL_USB3);
           ^
   include/kunit/test.h:1264:2: note: expanded from macro 'KUNIT_EXPECT_EQ'
           KUNIT_BINARY_EQ_ASSERTION(test, KUNIT_EXPECTATION, left, right)
           ^                                                  ~~~~
   include/kunit/test.h:901:2: note: expanded from macro 
'KUNIT_BINARY_EQ_ASSERTION'
           KUNIT_BINARY_EQ_MSG_ASSERTION(test,                                  
  \
           ^
   include/kunit/test.h:891:2: note: expanded from macro 
'KUNIT_BINARY_EQ_MSG_ASSERTION'
           KUNIT_BASE_EQ_MSG_ASSERTION(test,                                    
  \
           ^
   include/kunit/test.h:802:2: note: expanded from macro 
'KUNIT_BASE_EQ_MSG_ASSERTION'
           KUNIT_BASE_BINARY_ASSERTION(test,                                    
  \
           ^
   include/kunit/test.h:776:24: note: expanded from macro 
'KUNIT_BASE_BINARY_ASSERTION'
           typeof(left) __left = (left);                                        
  \
                                 ^~~~~
>> drivers/thunderbolt/test.c:1670:2: warning: Dereference of null pointer 
>> [clang-analyzer-core.NullDereference]
           KUNIT_EXPECT_STREQ(test, p->value.text, "Apple Inc.");
           ^
   include/kunit/test.h:1446:2: note: expanded from macro 'KUNIT_EXPECT_STREQ'
           KUNIT_BINARY_STR_EQ_ASSERTION(test, KUNIT_EXPECTATION, left, right)
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/kunit/test.h:1162:2: note: expanded from macro 
'KUNIT_BINARY_STR_EQ_ASSERTION'
           KUNIT_BINARY_STR_EQ_MSG_ASSERTION(test,                              
  \
           
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/kunit/test.h:1155:2: note: expanded from macro 
'KUNIT_BINARY_STR_EQ_MSG_ASSERTION'
           KUNIT_BINARY_STR_ASSERTION(test,                                     
  \
           
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/kunit/test.h:1132:24: note: expanded from macro 
'KUNIT_BINARY_STR_ASSERTION'
           typeof(left) __left = (left);                                        
  \
                                 ^~~~~~
   drivers/thunderbolt/test.c:1663:26: note: Assuming 'dir' is equal to null
           KUNIT_ASSERT_TRUE(test, dir != NULL);
                                   ^
   include/kunit/test.h:1513:46: note: expanded from macro 'KUNIT_ASSERT_TRUE'
           KUNIT_TRUE_ASSERTION(test, KUNIT_ASSERTION, condition)
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~
   include/kunit/test.h:739:46: note: expanded from macro 'KUNIT_TRUE_ASSERTION'
           KUNIT_TRUE_MSG_ASSERTION(test, assert_type, condition, NULL)
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~
   include/kunit/test.h:733:10: note: expanded from macro 
'KUNIT_TRUE_MSG_ASSERTION'
                                 condition,                                     
  \
   
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/kunit/test.h:721:7: note: expanded from macro 'KUNIT_UNARY_ASSERTION'
                           !!(condition) == !!expected_true,                    
  \
   
~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/kunit/test.h:683:7: note: expanded from macro 'KUNIT_ASSERTION'
                              pass,                                             
  \
                              ^~~~
   drivers/thunderbolt/test.c:1663:2: note: Loop condition is false.  Exiting 
loop
           KUNIT_ASSERT_TRUE(test, dir != NULL);
           ^
   include/kunit/test.h:1513:2: note: expanded from macro 'KUNIT_ASSERT_TRUE'
           KUNIT_TRUE_ASSERTION(test, KUNIT_ASSERTION, condition)
           ^
   include/kunit/test.h:739:2: note: expanded from macro 'KUNIT_TRUE_ASSERTION'
           KUNIT_TRUE_MSG_ASSERTION(test, assert_type, condition, NULL)
           ^
   include/kunit/test.h:731:2: note: expanded from macro 
'KUNIT_TRUE_MSG_ASSERTION'
           KUNIT_UNARY_ASSERTION(test,                                          
  \
           ^
   include/kunit/test.h:720:2: note: expanded from macro 'KUNIT_UNARY_ASSERTION'
           KUNIT_ASSERTION(test,                                                
  \
           ^
   include/kunit/test.h:679:74: note: expanded from macro 'KUNIT_ASSERTION'
   #define KUNIT_ASSERTION(test, pass, assert_class, INITIALIZER, fmt, ...) do 
{  \
                                                                            ^
   drivers/thunderbolt/test.c:1666:26: note: Assuming 'p' is non-null
           KUNIT_ASSERT_TRUE(test, !p);
                                   ^
   include/kunit/test.h:1513:46: note: expanded from macro 'KUNIT_ASSERT_TRUE'
           KUNIT_TRUE_ASSERTION(test, KUNIT_ASSERTION, condition)
                                                       ^~~~~~~~~
   include/kunit/test.h:739:46: note: expanded from macro 'KUNIT_TRUE_ASSERTION'
           KUNIT_TRUE_MSG_ASSERTION(test, assert_type, condition, NULL)
                                                       ^~~~~~~~~
   include/kunit/test.h:733:10: note: expanded from macro 
'KUNIT_TRUE_MSG_ASSERTION'
                                 condition,                                     
  \
                                 ^~~~~~~~~
   include/kunit/test.h:721:7: note: expanded from macro 'KUNIT_UNARY_ASSERTION'
                           !!(condition) == !!expected_true,                    
  \
                              ^~~~~~~~~
   include/kunit/test.h:683:7: note: expanded from macro 'KUNIT_ASSERTION'
                              pass,                                             
  \
                              ^~~~
   drivers/thunderbolt/test.c:1666:2: note: Loop condition is false.  Exiting 
loop
           KUNIT_ASSERT_TRUE(test, !p);
           ^
   include/kunit/test.h:1513:2: note: expanded from macro 'KUNIT_ASSERT_TRUE'
           KUNIT_TRUE_ASSERTION(test, KUNIT_ASSERTION, condition)
           ^
   include/kunit/test.h:739:2: note: expanded from macro 'KUNIT_TRUE_ASSERTION'
           KUNIT_TRUE_MSG_ASSERTION(test, assert_type, condition, NULL)
           ^
   include/kunit/test.h:731:2: note: expanded from macro 
'KUNIT_TRUE_MSG_ASSERTION'
           KUNIT_UNARY_ASSERTION(test,                                          
  \
           ^
   include/kunit/test.h:720:2: note: expanded from macro 'KUNIT_UNARY_ASSERTION'
           KUNIT_ASSERTION(test,                                                
  \
           ^
   include/kunit/test.h:679:74: note: expanded from macro 'KUNIT_ASSERTION'
   #define KUNIT_ASSERTION(test, pass, assert_class, INITIALIZER, fmt, ...) do 
{  \
                                                                            ^
   drivers/thunderbolt/test.c:1668:2: note: Value assigned to 'p'
           p = tb_property_find(dir, "vendorid", TB_PROPERTY_TYPE_TEXT);
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/thunderbolt/test.c:1669:26: note: Assuming 'p' is equal to null
           KUNIT_ASSERT_TRUE(test, p != NULL);
                                   ^
   include/kunit/test.h:1513:46: note: expanded from macro 'KUNIT_ASSERT_TRUE'
           KUNIT_TRUE_ASSERTION(test, KUNIT_ASSERTION, condition)
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~
   include/kunit/test.h:739:46: note: expanded from macro 'KUNIT_TRUE_ASSERTION'
           KUNIT_TRUE_MSG_ASSERTION(test, assert_type, condition, NULL)
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~
   include/kunit/test.h:733:10: note: expanded from macro 
'KUNIT_TRUE_MSG_ASSERTION'
                                 condition,                                     
  \
--
   
~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/kunit/test.h:683:7: note: expanded from macro 'KUNIT_ASSERTION'
                              pass,                                             
  \
                              ^~~~
   drivers/thunderbolt/test.c:1703:2: note: Loop condition is false.  Exiting 
loop
           KUNIT_EXPECT_EQ(test, p->value.immediate, (u32)0x1);
           ^
   include/kunit/test.h:1264:2: note: expanded from macro 'KUNIT_EXPECT_EQ'
           KUNIT_BINARY_EQ_ASSERTION(test, KUNIT_EXPECTATION, left, right)
           ^
   include/kunit/test.h:901:2: note: expanded from macro 
'KUNIT_BINARY_EQ_ASSERTION'
           KUNIT_BINARY_EQ_MSG_ASSERTION(test,                                  
  \
           ^
   include/kunit/test.h:891:2: note: expanded from macro 
'KUNIT_BINARY_EQ_MSG_ASSERTION'
           KUNIT_BASE_EQ_MSG_ASSERTION(test,                                    
  \
           ^
   include/kunit/test.h:802:2: note: expanded from macro 
'KUNIT_BASE_EQ_MSG_ASSERTION'
           KUNIT_BASE_BINARY_ASSERTION(test,                                    
  \
           ^
   include/kunit/test.h:780:2: note: expanded from macro 
'KUNIT_BASE_BINARY_ASSERTION'
           KUNIT_ASSERTION(test,                                                
  \
           ^
   include/kunit/test.h:679:74: note: expanded from macro 'KUNIT_ASSERTION'
   #define KUNIT_ASSERTION(test, pass, assert_class, INITIALIZER, fmt, ...) do 
{  \
                                                                            ^
   drivers/thunderbolt/test.c:1703:2: note: Loop condition is false.  Exiting 
loop
           KUNIT_EXPECT_EQ(test, p->value.immediate, (u32)0x1);
           ^
   include/kunit/test.h:1264:2: note: expanded from macro 'KUNIT_EXPECT_EQ'
           KUNIT_BINARY_EQ_ASSERTION(test, KUNIT_EXPECTATION, left, right)
           ^
   include/kunit/test.h:901:2: note: expanded from macro 
'KUNIT_BINARY_EQ_ASSERTION'
           KUNIT_BINARY_EQ_MSG_ASSERTION(test,                                  
  \
           ^
   include/kunit/test.h:891:2: note: expanded from macro 
'KUNIT_BINARY_EQ_MSG_ASSERTION'
           KUNIT_BASE_EQ_MSG_ASSERTION(test,                                    
  \
           ^
   include/kunit/test.h:802:2: note: expanded from macro 
'KUNIT_BASE_EQ_MSG_ASSERTION'
           KUNIT_BASE_BINARY_ASSERTION(test,                                    
  \
           ^
   include/kunit/test.h:774:24: note: expanded from macro 
'KUNIT_BASE_BINARY_ASSERTION'
                                       ...)                                     
  \
                                                                                
  ^
   drivers/thunderbolt/test.c:1705:2: note: Value assigned to 'p'
           p = tb_property_find(network_dir, "prtcstns", 
TB_PROPERTY_TYPE_VALUE);
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/thunderbolt/test.c:1706:26: note: Assuming 'p' is equal to null
           KUNIT_ASSERT_TRUE(test, p != NULL);
                                   ^
   include/kunit/test.h:1513:46: note: expanded from macro 'KUNIT_ASSERT_TRUE'
           KUNIT_TRUE_ASSERTION(test, KUNIT_ASSERTION, condition)
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~
   include/kunit/test.h:739:46: note: expanded from macro 'KUNIT_TRUE_ASSERTION'
           KUNIT_TRUE_MSG_ASSERTION(test, assert_type, condition, NULL)
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~
   include/kunit/test.h:733:10: note: expanded from macro 
'KUNIT_TRUE_MSG_ASSERTION'
                                 condition,                                     
  \
   
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/kunit/test.h:721:7: note: expanded from macro 'KUNIT_UNARY_ASSERTION'
                           !!(condition) == !!expected_true,                    
  \
   
~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/kunit/test.h:683:7: note: expanded from macro 'KUNIT_ASSERTION'
                              pass,                                             
  \
                              ^~~~
   drivers/thunderbolt/test.c:1706:2: note: Loop condition is false.  Exiting 
loop
           KUNIT_ASSERT_TRUE(test, p != NULL);
           ^
   include/kunit/test.h:1513:2: note: expanded from macro 'KUNIT_ASSERT_TRUE'
           KUNIT_TRUE_ASSERTION(test, KUNIT_ASSERTION, condition)
           ^
   include/kunit/test.h:739:2: note: expanded from macro 'KUNIT_TRUE_ASSERTION'
           KUNIT_TRUE_MSG_ASSERTION(test, assert_type, condition, NULL)
           ^
   include/kunit/test.h:731:2: note: expanded from macro 
'KUNIT_TRUE_MSG_ASSERTION'
           KUNIT_UNARY_ASSERTION(test,                                          
  \
           ^
   include/kunit/test.h:720:2: note: expanded from macro 'KUNIT_UNARY_ASSERTION'
           KUNIT_ASSERTION(test,                                                
  \
           ^
   include/kunit/test.h:679:74: note: expanded from macro 'KUNIT_ASSERTION'
   #define KUNIT_ASSERTION(test, pass, assert_class, INITIALIZER, fmt, ...) do 
{  \
                                                                            ^
   drivers/thunderbolt/test.c:1707:2: note: Dereference of null pointer
           KUNIT_EXPECT_EQ(test, p->value.immediate, (u32)0x0);
           ^
   include/kunit/test.h:1264:2: note: expanded from macro 'KUNIT_EXPECT_EQ'
           KUNIT_BINARY_EQ_ASSERTION(test, KUNIT_EXPECTATION, left, right)
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/kunit/test.h:901:2: note: expanded from macro 
'KUNIT_BINARY_EQ_ASSERTION'
           KUNIT_BINARY_EQ_MSG_ASSERTION(test,                                  
  \
           
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/kunit/test.h:891:2: note: expanded from macro 
'KUNIT_BINARY_EQ_MSG_ASSERTION'
           KUNIT_BASE_EQ_MSG_ASSERTION(test,                                    
  \
           
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/kunit/test.h:802:2: note: expanded from macro 
'KUNIT_BASE_EQ_MSG_ASSERTION'
           KUNIT_BASE_BINARY_ASSERTION(test,                                    
  \
           
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/kunit/test.h:776:24: note: expanded from macro 
'KUNIT_BASE_BINARY_ASSERTION'
           typeof(left) __left = (left);                                        
  \
                                 ^~~~~~
>> drivers/thunderbolt/test.c:1739:3: warning: Array access (from variable 
>> 'block') results in a null pointer dereference 
>> [clang-analyzer-core.NullDereference]
                   KUNIT_EXPECT_EQ(test, root_directory[i], block[i]);
                   ^
   include/kunit/test.h:1264:2: note: expanded from macro 'KUNIT_EXPECT_EQ'
           KUNIT_BINARY_EQ_ASSERTION(test, KUNIT_EXPECTATION, left, right)
           ^                                                        ~~~~~
   include/kunit/test.h:901:2: note: expanded from macro 
'KUNIT_BINARY_EQ_ASSERTION'
           KUNIT_BINARY_EQ_MSG_ASSERTION(test,                                  
  \
           ^
   include/kunit/test.h:891:2: note: expanded from macro 
'KUNIT_BINARY_EQ_MSG_ASSERTION'
           KUNIT_BASE_EQ_MSG_ASSERTION(test,                                    
  \
           ^
   include/kunit/test.h:802:2: note: expanded from macro 
'KUNIT_BASE_EQ_MSG_ASSERTION'
           KUNIT_BASE_BINARY_ASSERTION(test,                                    
  \
           ^
   include/kunit/test.h:777:26: note: expanded from macro 
'KUNIT_BASE_BINARY_ASSERTION'
           typeof(right) __right = (right);                                     
  \
                                   ^~~~~~
   drivers/thunderbolt/test.c:1725:26: note: Assuming 'dir' is equal to null
           KUNIT_ASSERT_TRUE(test, dir != NULL);
                                   ^
   include/kunit/test.h:1513:46: note: expanded from macro 'KUNIT_ASSERT_TRUE'
           KUNIT_TRUE_ASSERTION(test, KUNIT_ASSERTION, condition)
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~
   include/kunit/test.h:739:46: note: expanded from macro 'KUNIT_TRUE_ASSERTION'
           KUNIT_TRUE_MSG_ASSERTION(test, assert_type, condition, NULL)
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~
   include/kunit/test.h:733:10: note: expanded from macro 
'KUNIT_TRUE_MSG_ASSERTION'
                                 condition,                                     
  \
   
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/kunit/test.h:721:7: note: expanded from macro 'KUNIT_UNARY_ASSERTION'
                           !!(condition) == !!expected_true,                    
  \
   
~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/kunit/test.h:683:7: note: expanded from macro 'KUNIT_ASSERTION'
                              pass,                                             
  \
                              ^~~~
   drivers/thunderbolt/test.c:1725:2: note: Loop condition is false.  Exiting 
loop
           KUNIT_ASSERT_TRUE(test, dir != NULL);
           ^
   include/kunit/test.h:1513:2: note: expanded from macro 'KUNIT_ASSERT_TRUE'
           KUNIT_TRUE_ASSERTION(test, KUNIT_ASSERTION, condition)
           ^
   include/kunit/test.h:739:2: note: expanded from macro 'KUNIT_TRUE_ASSERTION'
           KUNIT_TRUE_MSG_ASSERTION(test, assert_type, condition, NULL)
           ^
   include/kunit/test.h:731:2: note: expanded from macro 
'KUNIT_TRUE_MSG_ASSERTION'
           KUNIT_UNARY_ASSERTION(test,                                          
  \
           ^
   include/kunit/test.h:720:2: note: expanded from macro 'KUNIT_UNARY_ASSERTION'
           KUNIT_ASSERTION(test,                                                
  \
           ^
   include/kunit/test.h:679:74: note: expanded from macro 'KUNIT_ASSERTION'
   #define KUNIT_ASSERTION(test, pass, assert_class, INITIALIZER, fmt, ...) do 
{  \
                                                                            ^
   drivers/thunderbolt/test.c:1728:2: note: Assuming '__left' is not equal to 
'__right'
           KUNIT_ASSERT_EQ(test, ret, (int)ARRAY_SIZE(root_directory));
           ^
   include/kunit/test.h:1552:2: note: expanded from macro 'KUNIT_ASSERT_EQ'
           KUNIT_BINARY_EQ_ASSERTION(test, KUNIT_ASSERTION, left, right)
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/kunit/test.h:901:2: note: expanded from macro 
'KUNIT_BINARY_EQ_ASSERTION'
           KUNIT_BINARY_EQ_MSG_ASSERTION(test,                                  
  \
           
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/kunit/test.h:891:2: note: expanded from macro 
'KUNIT_BINARY_EQ_MSG_ASSERTION'
           KUNIT_BASE_EQ_MSG_ASSERTION(test,                                    
  \
           
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/kunit/test.h:802:2: note: expanded from macro 
'KUNIT_BASE_EQ_MSG_ASSERTION'
           KUNIT_BASE_BINARY_ASSERTION(test,                                    
  \
           
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/kunit/test.h:781:4: note: expanded from macro 
'KUNIT_BASE_BINARY_ASSERTION'
                           __left op __right,                                   
  \
   
~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/kunit/test.h:683:7: note: expanded from macro 'KUNIT_ASSERTION'
                              pass,                                             
  \
                              ^~~~
   drivers/thunderbolt/test.c:1728:2: note: Loop condition is false.  Exiting 
loop
           KUNIT_ASSERT_EQ(test, ret, (int)ARRAY_SIZE(root_directory));
           ^
   include/kunit/test.h:1552:2: note: expanded from macro 'KUNIT_ASSERT_EQ'
           KUNIT_BINARY_EQ_ASSERTION(test, KUNIT_ASSERTION, left, right)
           ^
   include/kunit/test.h:901:2: note: expanded from macro 
'KUNIT_BINARY_EQ_ASSERTION'
           KUNIT_BINARY_EQ_MSG_ASSERTION(test,                                  
  \
           ^
   include/kunit/test.h:891:2: note: expanded from macro 
'KUNIT_BINARY_EQ_MSG_ASSERTION'
           KUNIT_BASE_EQ_MSG_ASSERTION(test,                                    
  \
           ^
   include/kunit/test.h:802:2: note: expanded from macro 
'KUNIT_BASE_EQ_MSG_ASSERTION'
           KUNIT_BASE_BINARY_ASSERTION(test,                                    
  \
           ^
   include/kunit/test.h:780:2: note: expanded from macro 
'KUNIT_BASE_BINARY_ASSERTION'
           KUNIT_ASSERTION(test,                                                
  \
           ^
   include/kunit/test.h:679:74: note: expanded from macro 'KUNIT_ASSERTION'
   #define KUNIT_ASSERTION(test, pass, assert_class, INITIALIZER, fmt, ...) do 
{  \
                                                                            ^
   drivers/thunderbolt/test.c:1728:2: note: Loop condition is false.  Exiting 
loop
           KUNIT_ASSERT_EQ(test, ret, (int)ARRAY_SIZE(root_directory));
           ^
   include/kunit/test.h:1552:2: note: expanded from macro 'KUNIT_ASSERT_EQ'
           KUNIT_BINARY_EQ_ASSERTION(test, KUNIT_ASSERTION, left, right)
--
                              ^~~~
   drivers/thunderbolt/test.c:1733:2: note: Loop condition is false.  Exiting 
loop
           KUNIT_ASSERT_TRUE(test, block != NULL);
           ^
   include/kunit/test.h:1513:2: note: expanded from macro 'KUNIT_ASSERT_TRUE'
           KUNIT_TRUE_ASSERTION(test, KUNIT_ASSERTION, condition)
           ^
   include/kunit/test.h:739:2: note: expanded from macro 'KUNIT_TRUE_ASSERTION'
           KUNIT_TRUE_MSG_ASSERTION(test, assert_type, condition, NULL)
           ^
   include/kunit/test.h:731:2: note: expanded from macro 
'KUNIT_TRUE_MSG_ASSERTION'
           KUNIT_UNARY_ASSERTION(test,                                          
  \
           ^
   include/kunit/test.h:720:2: note: expanded from macro 'KUNIT_UNARY_ASSERTION'
           KUNIT_ASSERTION(test,                                                
  \
           ^
   include/kunit/test.h:679:74: note: expanded from macro 'KUNIT_ASSERTION'
   #define KUNIT_ASSERTION(test, pass, assert_class, INITIALIZER, fmt, ...) do 
{  \
                                                                            ^
   drivers/thunderbolt/test.c:1736:2: note: Assuming '__left' is not equal to 
'__right'
           KUNIT_EXPECT_EQ(test, ret, 0);
           ^
   include/kunit/test.h:1264:2: note: expanded from macro 'KUNIT_EXPECT_EQ'
           KUNIT_BINARY_EQ_ASSERTION(test, KUNIT_EXPECTATION, left, right)
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/kunit/test.h:901:2: note: expanded from macro 
'KUNIT_BINARY_EQ_ASSERTION'
           KUNIT_BINARY_EQ_MSG_ASSERTION(test,                                  
  \
           
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/kunit/test.h:891:2: note: expanded from macro 
'KUNIT_BINARY_EQ_MSG_ASSERTION'
           KUNIT_BASE_EQ_MSG_ASSERTION(test,                                    
  \
           
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/kunit/test.h:802:2: note: expanded from macro 
'KUNIT_BASE_EQ_MSG_ASSERTION'
           KUNIT_BASE_BINARY_ASSERTION(test,                                    
  \
           
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/kunit/test.h:781:4: note: expanded from macro 
'KUNIT_BASE_BINARY_ASSERTION'
                           __left op __right,                                   
  \
   
~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/kunit/test.h:683:7: note: expanded from macro 'KUNIT_ASSERTION'
                              pass,                                             
  \
                              ^~~~
   drivers/thunderbolt/test.c:1736:2: note: Loop condition is false.  Exiting 
loop
           KUNIT_EXPECT_EQ(test, ret, 0);
           ^
   include/kunit/test.h:1264:2: note: expanded from macro 'KUNIT_EXPECT_EQ'
           KUNIT_BINARY_EQ_ASSERTION(test, KUNIT_EXPECTATION, left, right)
           ^
   include/kunit/test.h:901:2: note: expanded from macro 
'KUNIT_BINARY_EQ_ASSERTION'
           KUNIT_BINARY_EQ_MSG_ASSERTION(test,                                  
  \
           ^
   include/kunit/test.h:891:2: note: expanded from macro 
'KUNIT_BINARY_EQ_MSG_ASSERTION'
           KUNIT_BASE_EQ_MSG_ASSERTION(test,                                    
  \
           ^
   include/kunit/test.h:802:2: note: expanded from macro 
'KUNIT_BASE_EQ_MSG_ASSERTION'
           KUNIT_BASE_BINARY_ASSERTION(test,                                    
  \
           ^
   include/kunit/test.h:780:2: note: expanded from macro 
'KUNIT_BASE_BINARY_ASSERTION'
           KUNIT_ASSERTION(test,                                                
  \
           ^
   include/kunit/test.h:679:74: note: expanded from macro 'KUNIT_ASSERTION'
   #define KUNIT_ASSERTION(test, pass, assert_class, INITIALIZER, fmt, ...) do 
{  \
                                                                            ^
   drivers/thunderbolt/test.c:1736:2: note: Loop condition is false.  Exiting 
loop
           KUNIT_EXPECT_EQ(test, ret, 0);
           ^
   include/kunit/test.h:1264:2: note: expanded from macro 'KUNIT_EXPECT_EQ'
           KUNIT_BINARY_EQ_ASSERTION(test, KUNIT_EXPECTATION, left, right)
           ^
   include/kunit/test.h:901:2: note: expanded from macro 
'KUNIT_BINARY_EQ_ASSERTION'
           KUNIT_BINARY_EQ_MSG_ASSERTION(test,                                  
  \
           ^
   include/kunit/test.h:891:2: note: expanded from macro 
'KUNIT_BINARY_EQ_MSG_ASSERTION'
           KUNIT_BASE_EQ_MSG_ASSERTION(test,                                    
  \
           ^
   include/kunit/test.h:802:2: note: expanded from macro 
'KUNIT_BASE_EQ_MSG_ASSERTION'
           KUNIT_BASE_BINARY_ASSERTION(test,                                    
  \
           ^
   include/kunit/test.h:774:24: note: expanded from macro 
'KUNIT_BASE_BINARY_ASSERTION'
                                       ...)                                     
  \
                                                                                
  ^
   drivers/thunderbolt/test.c:1738:2: note: Loop condition is true.  Entering 
loop body
           for (i = 0; i < ARRAY_SIZE(root_directory); i++)
           ^
   drivers/thunderbolt/test.c:1739:3: note: Array access (from variable 
'block') results in a null pointer dereference
                   KUNIT_EXPECT_EQ(test, root_directory[i], block[i]);
                   ^
   include/kunit/test.h:1264:2: note: expanded from macro 'KUNIT_EXPECT_EQ'
           KUNIT_BINARY_EQ_ASSERTION(test, KUNIT_EXPECTATION, left, right)
           ^                                                        ~~~~~
   include/kunit/test.h:901:2: note: expanded from macro 
'KUNIT_BINARY_EQ_ASSERTION'
           KUNIT_BINARY_EQ_MSG_ASSERTION(test,                                  
  \
           ^
   include/kunit/test.h:891:2: note: expanded from macro 
'KUNIT_BINARY_EQ_MSG_ASSERTION'
           KUNIT_BASE_EQ_MSG_ASSERTION(test,                                    
  \
           ^
   include/kunit/test.h:802:2: note: expanded from macro 
'KUNIT_BASE_EQ_MSG_ASSERTION'
           KUNIT_BASE_BINARY_ASSERTION(test,                                    
  \
           ^
   include/kunit/test.h:777:26: note: expanded from macro 
'KUNIT_BASE_BINARY_ASSERTION'
           typeof(right) __right = (right);                                     
  \
                                   ^~~~~~
>> drivers/thunderbolt/test.c:1792:6: warning: Null pointer passed as 1st 
>> argument to memory comparison function [clang-analyzer-unix.cstring.NullArg]
                                   !memcmp(p1->value.data, p2->value.data,
                                    ^
   include/kunit/test.h:1513:46: note: expanded from macro 'KUNIT_ASSERT_TRUE'
           KUNIT_TRUE_ASSERTION(test, KUNIT_ASSERTION, condition)
                                                       ^~~~~~~~~
   include/kunit/test.h:739:46: note: expanded from macro 'KUNIT_TRUE_ASSERTION'
           KUNIT_TRUE_MSG_ASSERTION(test, assert_type, condition, NULL)
                                                       ^~~~~~~~~
   include/kunit/test.h:733:10: note: expanded from macro 
'KUNIT_TRUE_MSG_ASSERTION'
                                 condition,                                     
  \
                                 ^~~~~~~~~
   include/kunit/test.h:721:7: note: expanded from macro 'KUNIT_UNARY_ASSERTION'
                           !!(condition) == !!expected_true,                    
  \
                              ^~~~~~~~~
   include/kunit/test.h:683:7: note: expanded from macro 'KUNIT_ASSERTION'
                              pass,                                             
  \
                              ^~~~
   drivers/thunderbolt/test.c:1750:6: note: Assuming field 'uuid' is null
           if (d1->uuid) {
               ^~~~~~~~
   drivers/thunderbolt/test.c:1750:2: note: Taking false branch
           if (d1->uuid) {
           ^
   drivers/thunderbolt/test.c:1754:27: note: Assuming field 'uuid' is not equal 
to null
                   KUNIT_ASSERT_TRUE(test, d2->uuid == NULL);
                                           ^
   include/kunit/test.h:1513:46: note: expanded from macro 'KUNIT_ASSERT_TRUE'
           KUNIT_TRUE_ASSERTION(test, KUNIT_ASSERTION, condition)
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~
   include/kunit/test.h:739:46: note: expanded from macro 'KUNIT_TRUE_ASSERTION'
           KUNIT_TRUE_MSG_ASSERTION(test, assert_type, condition, NULL)
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~
   include/kunit/test.h:733:10: note: expanded from macro 
'KUNIT_TRUE_MSG_ASSERTION'
                                 condition,                                     
  \
   
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/kunit/test.h:721:7: note: expanded from macro 'KUNIT_UNARY_ASSERTION'
                           !!(condition) == !!expected_true,                    
  \
   
~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/kunit/test.h:683:7: note: expanded from macro 'KUNIT_ASSERTION'
                              pass,                                             
  \
                              ^~~~
   drivers/thunderbolt/test.c:1754:3: note: Loop condition is false.  Exiting 
loop
                   KUNIT_ASSERT_TRUE(test, d2->uuid == NULL);
                   ^
   include/kunit/test.h:1513:2: note: expanded from macro 'KUNIT_ASSERT_TRUE'
           KUNIT_TRUE_ASSERTION(test, KUNIT_ASSERTION, condition)
           ^
   include/kunit/test.h:739:2: note: expanded from macro 'KUNIT_TRUE_ASSERTION'
           KUNIT_TRUE_MSG_ASSERTION(test, assert_type, condition, NULL)
           ^
   include/kunit/test.h:731:2: note: expanded from macro 
'KUNIT_TRUE_MSG_ASSERTION'
           KUNIT_UNARY_ASSERTION(test,                                          
  \
           ^
   include/kunit/test.h:720:2: note: expanded from macro 'KUNIT_UNARY_ASSERTION'
           KUNIT_ASSERTION(test,                                                
  \
           ^
   include/kunit/test.h:679:74: note: expanded from macro 'KUNIT_ASSERTION'
   #define KUNIT_ASSERTION(test, pass, assert_class, INITIALIZER, fmt, ...) do 
{  \
                                                                            ^
   drivers/thunderbolt/test.c:1758:2: note: Loop condition is true.  Entering 
loop body
           tb_property_for_each(d1, tmp)
           ^
   include/linux/thunderbolt.h:167:2: note: expanded from macro 
'tb_property_for_each'
           for (property = tb_property_get_next(dir, NULL);        \
           ^
   drivers/thunderbolt/test.c:1758:2: note: Loop condition is false. Execution 
continues on line 1760
           tb_property_for_each(d1, tmp)
           ^
   include/linux/thunderbolt.h:167:2: note: expanded from macro 
'tb_property_for_each'
           for (property = tb_property_get_next(dir, NULL);        \
           ^
   drivers/thunderbolt/test.c:1760:2: note: Loop condition is false.  Exiting 
loop
           KUNIT_ASSERT_NE(test, n1, 0);
           ^
   include/kunit/test.h:1594:2: note: expanded from macro 'KUNIT_ASSERT_NE'
           KUNIT_BINARY_NE_ASSERTION(test, KUNIT_ASSERTION, left, right)
           ^
   include/kunit/test.h:940:2: note: expanded from macro 
'KUNIT_BINARY_NE_ASSERTION'
           KUNIT_BINARY_NE_MSG_ASSERTION(test,                                  
  \
           ^
   include/kunit/test.h:930:2: note: expanded from macro 
'KUNIT_BINARY_NE_MSG_ASSERTION'
           KUNIT_BASE_NE_MSG_ASSERTION(test,                                    
  \
           ^
   include/kunit/test.h:818:2: note: expanded from macro 
'KUNIT_BASE_NE_MSG_ASSERTION'
           KUNIT_BASE_BINARY_ASSERTION(test,                                    
  \
           ^
   include/kunit/test.h:780:2: note: expanded from macro 
'KUNIT_BASE_BINARY_ASSERTION'
           KUNIT_ASSERTION(test,                                                
  \
           ^
   include/kunit/test.h:679:74: note: expanded from macro 'KUNIT_ASSERTION'
   #define KUNIT_ASSERTION(test, pass, assert_class, INITIALIZER, fmt, ...) do 
{  \
                                                                            ^
   drivers/thunderbolt/test.c:1760:2: note: Loop condition is false.  Exiting 
loop
           KUNIT_ASSERT_NE(test, n1, 0);
           ^
   include/kunit/test.h:1594:2: note: expanded from macro 'KUNIT_ASSERT_NE'
           KUNIT_BINARY_NE_ASSERTION(test, KUNIT_ASSERTION, left, right)
           ^
   include/kunit/test.h:940:2: note: expanded from macro 
'KUNIT_BINARY_NE_ASSERTION'
           KUNIT_BINARY_NE_MSG_ASSERTION(test,                                  
  \
--
           ^
   include/kunit/test.h:802:2: note: expanded from macro 
'KUNIT_BASE_EQ_MSG_ASSERTION'
           KUNIT_BASE_BINARY_ASSERTION(test,                                    
  \
           ^
   include/kunit/test.h:774:24: note: expanded from macro 
'KUNIT_BASE_BINARY_ASSERTION'
                                       ...)                                     
  \
                                                                                
  ^
   drivers/thunderbolt/test.c:1781:3: note: Control jumps to 'case 
TB_PROPERTY_TYPE_DATA:'  at line 1788
                   switch (p1->type) {
                   ^
   drivers/thunderbolt/test.c:1789:28: note: Assuming field 'data' is equal to 
null
                           KUNIT_ASSERT_TRUE(test, p1->value.data != NULL);
                                                   ^
   include/kunit/test.h:1513:46: note: expanded from macro 'KUNIT_ASSERT_TRUE'
           KUNIT_TRUE_ASSERTION(test, KUNIT_ASSERTION, condition)
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~
   include/kunit/test.h:739:46: note: expanded from macro 'KUNIT_TRUE_ASSERTION'
           KUNIT_TRUE_MSG_ASSERTION(test, assert_type, condition, NULL)
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~
   include/kunit/test.h:733:10: note: expanded from macro 
'KUNIT_TRUE_MSG_ASSERTION'
                                 condition,                                     
  \
   
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/kunit/test.h:721:7: note: expanded from macro 'KUNIT_UNARY_ASSERTION'
                           !!(condition) == !!expected_true,                    
  \
   
~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/kunit/test.h:683:7: note: expanded from macro 'KUNIT_ASSERTION'
                              pass,                                             
  \
                              ^~~~
   drivers/thunderbolt/test.c:1789:4: note: Loop condition is false.  Exiting 
loop
                           KUNIT_ASSERT_TRUE(test, p1->value.data != NULL);
                           ^
   include/kunit/test.h:1513:2: note: expanded from macro 'KUNIT_ASSERT_TRUE'
           KUNIT_TRUE_ASSERTION(test, KUNIT_ASSERTION, condition)
           ^
   include/kunit/test.h:739:2: note: expanded from macro 'KUNIT_TRUE_ASSERTION'
           KUNIT_TRUE_MSG_ASSERTION(test, assert_type, condition, NULL)
           ^
   include/kunit/test.h:731:2: note: expanded from macro 
'KUNIT_TRUE_MSG_ASSERTION'
           KUNIT_UNARY_ASSERTION(test,                                          
  \
           ^
   include/kunit/test.h:720:2: note: expanded from macro 'KUNIT_UNARY_ASSERTION'
           KUNIT_ASSERTION(test,                                                
  \
           ^
   include/kunit/test.h:679:74: note: expanded from macro 'KUNIT_ASSERTION'
   #define KUNIT_ASSERTION(test, pass, assert_class, INITIALIZER, fmt, ...) do 
{  \
                                                                            ^
   drivers/thunderbolt/test.c:1790:28: note: Assuming field 'data' is equal to 
null
                           KUNIT_ASSERT_TRUE(test, p2->value.data != NULL);
                                                   ^
   include/kunit/test.h:1513:46: note: expanded from macro 'KUNIT_ASSERT_TRUE'
           KUNIT_TRUE_ASSERTION(test, KUNIT_ASSERTION, condition)
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~
   include/kunit/test.h:739:46: note: expanded from macro 'KUNIT_TRUE_ASSERTION'
           KUNIT_TRUE_MSG_ASSERTION(test, assert_type, condition, NULL)
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~
   include/kunit/test.h:733:10: note: expanded from macro 
'KUNIT_TRUE_MSG_ASSERTION'
                                 condition,                                     
  \
   
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/kunit/test.h:721:7: note: expanded from macro 'KUNIT_UNARY_ASSERTION'
                           !!(condition) == !!expected_true,                    
  \
   
~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/kunit/test.h:683:7: note: expanded from macro 'KUNIT_ASSERTION'
                              pass,                                             
  \
                              ^~~~
   drivers/thunderbolt/test.c:1790:4: note: Loop condition is false.  Exiting 
loop
                           KUNIT_ASSERT_TRUE(test, p2->value.data != NULL);
                           ^
   include/kunit/test.h:1513:2: note: expanded from macro 'KUNIT_ASSERT_TRUE'
           KUNIT_TRUE_ASSERTION(test, KUNIT_ASSERTION, condition)
           ^
   include/kunit/test.h:739:2: note: expanded from macro 'KUNIT_TRUE_ASSERTION'
           KUNIT_TRUE_MSG_ASSERTION(test, assert_type, condition, NULL)
           ^
   include/kunit/test.h:731:2: note: expanded from macro 
'KUNIT_TRUE_MSG_ASSERTION'
           KUNIT_UNARY_ASSERTION(test,                                          
  \
           ^
   include/kunit/test.h:720:2: note: expanded from macro 'KUNIT_UNARY_ASSERTION'
           KUNIT_ASSERTION(test,                                                
  \
           ^
   include/kunit/test.h:679:74: note: expanded from macro 'KUNIT_ASSERTION'
   #define KUNIT_ASSERTION(test, pass, assert_class, INITIALIZER, fmt, ...) do 
{  \
                                                                            ^
   drivers/thunderbolt/test.c:1792:6: note: Null pointer passed as 1st argument 
to memory comparison function
                                   !memcmp(p1->value.data, p2->value.data,
                                    ^
   include/kunit/test.h:1513:46: note: expanded from macro 'KUNIT_ASSERT_TRUE'
           KUNIT_TRUE_ASSERTION(test, KUNIT_ASSERTION, condition)
                                                       ^~~~~~~~~
   include/kunit/test.h:739:46: note: expanded from macro 'KUNIT_TRUE_ASSERTION'
           KUNIT_TRUE_MSG_ASSERTION(test, assert_type, condition, NULL)
                                                       ^~~~~~~~~
   include/kunit/test.h:733:10: note: expanded from macro 
'KUNIT_TRUE_MSG_ASSERTION'
                                 condition,                                     
  \
                                 ^~~~~~~~~
   include/kunit/test.h:721:7: note: expanded from macro 'KUNIT_UNARY_ASSERTION'
                           !!(condition) == !!expected_true,                    
  \
                              ^~~~~~~~~
   include/kunit/test.h:683:7: note: expanded from macro 'KUNIT_ASSERTION'
                              pass,                                             
  \
                              ^~~~
>> drivers/thunderbolt/test.c:1792:6: warning: Null pointer passed as 2nd 
>> argument to memory comparison function [clang-analyzer-unix.cstring.NullArg]
                                   !memcmp(p1->value.data, p2->value.data,
                                    ^
   include/kunit/test.h:1513:46: note: expanded from macro 'KUNIT_ASSERT_TRUE'
           KUNIT_TRUE_ASSERTION(test, KUNIT_ASSERTION, condition)
                                                       ^~~~~~~~~
   include/kunit/test.h:739:46: note: expanded from macro 'KUNIT_TRUE_ASSERTION'
           KUNIT_TRUE_MSG_ASSERTION(test, assert_type, condition, NULL)
                                                       ^~~~~~~~~
   include/kunit/test.h:733:10: note: expanded from macro 
'KUNIT_TRUE_MSG_ASSERTION'
                                 condition,                                     
  \
                                 ^~~~~~~~~
   include/kunit/test.h:721:7: note: expanded from macro 'KUNIT_UNARY_ASSERTION'
                           !!(condition) == !!expected_true,                    
  \
                              ^~~~~~~~~
   include/kunit/test.h:683:7: note: expanded from macro 'KUNIT_ASSERTION'
                              pass,                                             
  \
                              ^~~~
   drivers/thunderbolt/test.c:1750:6: note: Assuming field 'uuid' is null
           if (d1->uuid) {
               ^~~~~~~~
   drivers/thunderbolt/test.c:1750:2: note: Taking false branch
           if (d1->uuid) {
           ^
   drivers/thunderbolt/test.c:1754:27: note: Assuming field 'uuid' is not equal 
to null
                   KUNIT_ASSERT_TRUE(test, d2->uuid == NULL);
                                           ^
   include/kunit/test.h:1513:46: note: expanded from macro 'KUNIT_ASSERT_TRUE'
           KUNIT_TRUE_ASSERTION(test, KUNIT_ASSERTION, condition)
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~
   include/kunit/test.h:739:46: note: expanded from macro 'KUNIT_TRUE_ASSERTION'
           KUNIT_TRUE_MSG_ASSERTION(test, assert_type, condition, NULL)
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~
   include/kunit/test.h:733:10: note: expanded from macro 
'KUNIT_TRUE_MSG_ASSERTION'
                                 condition,                                     
  \
   
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/kunit/test.h:721:7: note: expanded from macro 'KUNIT_UNARY_ASSERTION'
                           !!(condition) == !!expected_true,                    
  \
   
~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/kunit/test.h:683:7: note: expanded from macro 'KUNIT_ASSERTION'
                              pass,                                             
  \
                              ^~~~
   drivers/thunderbolt/test.c:1754:3: note: Loop condition is false.  Exiting 
loop
                   KUNIT_ASSERT_TRUE(test, d2->uuid == NULL);
                   ^
   include/kunit/test.h:1513:2: note: expanded from macro 'KUNIT_ASSERT_TRUE'
           KUNIT_TRUE_ASSERTION(test, KUNIT_ASSERTION, condition)
           ^
   include/kunit/test.h:739:2: note: expanded from macro 'KUNIT_TRUE_ASSERTION'
           KUNIT_TRUE_MSG_ASSERTION(test, assert_type, condition, NULL)
           ^
   include/kunit/test.h:731:2: note: expanded from macro 
'KUNIT_TRUE_MSG_ASSERTION'
           KUNIT_UNARY_ASSERTION(test,                                          
  \
           ^
   include/kunit/test.h:720:2: note: expanded from macro 'KUNIT_UNARY_ASSERTION'
           KUNIT_ASSERTION(test,                                                
  \
           ^
   include/kunit/test.h:679:74: note: expanded from macro 'KUNIT_ASSERTION'
   #define KUNIT_ASSERTION(test, pass, assert_class, INITIALIZER, fmt, ...) do 
{  \
                                                                            ^
   drivers/thunderbolt/test.c:1758:2: note: Loop condition is true.  Entering 
loop body
           tb_property_for_each(d1, tmp)
           ^
   include/linux/thunderbolt.h:167:2: note: expanded from macro 
'tb_property_for_each'
           for (property = tb_property_get_next(dir, NULL);        \
           ^
   drivers/thunderbolt/test.c:1758:2: note: Loop condition is false. Execution 
continues on line 1760
           tb_property_for_each(d1, tmp)
           ^
   include/linux/thunderbolt.h:167:2: note: expanded from macro 
'tb_property_for_each'
           for (property = tb_property_get_next(dir, NULL);        \
           ^
   drivers/thunderbolt/test.c:1760:2: note: Loop condition is false.  Exiting 
loop
           KUNIT_ASSERT_NE(test, n1, 0);
           ^
   include/kunit/test.h:1594:2: note: expanded from macro 'KUNIT_ASSERT_NE'
           KUNIT_BINARY_NE_ASSERTION(test, KUNIT_ASSERTION, left, right)
           ^
   include/kunit/test.h:940:2: note: expanded from macro 
'KUNIT_BINARY_NE_ASSERTION'
           KUNIT_BINARY_NE_MSG_ASSERTION(test,                                  
  \
           ^
   include/kunit/test.h:930:2: note: expanded from macro 
'KUNIT_BINARY_NE_MSG_ASSERTION'
           KUNIT_BASE_NE_MSG_ASSERTION(test,                                    
  \
           ^
   include/kunit/test.h:818:2: note: expanded from macro 
'KUNIT_BASE_NE_MSG_ASSERTION'
           KUNIT_BASE_BINARY_ASSERTION(test,                                    
  \
           ^
   include/kunit/test.h:780:2: note: expanded from macro 
'KUNIT_BASE_BINARY_ASSERTION'
           KUNIT_ASSERTION(test,                                                
  \
           ^
   include/kunit/test.h:679:74: note: expanded from macro 'KUNIT_ASSERTION'
   #define KUNIT_ASSERTION(test, pass, assert_class, INITIALIZER, fmt, ...) do 
{  \
                                                                            ^
   drivers/thunderbolt/test.c:1760:2: note: Loop condition is false.  Exiting 
loop
           KUNIT_ASSERT_NE(test, n1, 0);
           ^
   include/kunit/test.h:1594:2: note: expanded from macro 'KUNIT_ASSERT_NE'
           KUNIT_BINARY_NE_ASSERTION(test, KUNIT_ASSERTION, left, right)
           ^
   include/kunit/test.h:940:2: note: expanded from macro 
'KUNIT_BINARY_NE_ASSERTION'
           KUNIT_BINARY_NE_MSG_ASSERTION(test,                                  
  \
--
           ^
   include/kunit/test.h:774:24: note: expanded from macro 
'KUNIT_BASE_BINARY_ASSERTION'
                                       ...)                                     
  \
                                                                                
  ^
   drivers/thunderbolt/test.c:1833:2: note: Value assigned to 'block'
           block = kunit_kzalloc(test, sizeof(root_directory), GFP_KERNEL);
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/thunderbolt/test.c:1834:26: note: Assuming 'block' is equal to null
           KUNIT_ASSERT_TRUE(test, block != NULL);
                                   ^
   include/kunit/test.h:1513:46: note: expanded from macro 'KUNIT_ASSERT_TRUE'
           KUNIT_TRUE_ASSERTION(test, KUNIT_ASSERTION, condition)
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~
   include/kunit/test.h:739:46: note: expanded from macro 'KUNIT_TRUE_ASSERTION'
           KUNIT_TRUE_MSG_ASSERTION(test, assert_type, condition, NULL)
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~
   include/kunit/test.h:733:10: note: expanded from macro 
'KUNIT_TRUE_MSG_ASSERTION'
                                 condition,                                     
  \
   
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/kunit/test.h:721:7: note: expanded from macro 'KUNIT_UNARY_ASSERTION'
                           !!(condition) == !!expected_true,                    
  \
   
~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/kunit/test.h:683:7: note: expanded from macro 'KUNIT_ASSERTION'
                              pass,                                             
  \
                              ^~~~
   drivers/thunderbolt/test.c:1834:2: note: Loop condition is false.  Exiting 
loop
           KUNIT_ASSERT_TRUE(test, block != NULL);
           ^
   include/kunit/test.h:1513:2: note: expanded from macro 'KUNIT_ASSERT_TRUE'
           KUNIT_TRUE_ASSERTION(test, KUNIT_ASSERTION, condition)
           ^
   include/kunit/test.h:739:2: note: expanded from macro 'KUNIT_TRUE_ASSERTION'
           KUNIT_TRUE_MSG_ASSERTION(test, assert_type, condition, NULL)
           ^
   include/kunit/test.h:731:2: note: expanded from macro 
'KUNIT_TRUE_MSG_ASSERTION'
           KUNIT_UNARY_ASSERTION(test,                                          
  \
           ^
   include/kunit/test.h:720:2: note: expanded from macro 'KUNIT_UNARY_ASSERTION'
           KUNIT_ASSERTION(test,                                                
  \
           ^
   include/kunit/test.h:679:74: note: expanded from macro 'KUNIT_ASSERTION'
   #define KUNIT_ASSERTION(test, pass, assert_class, INITIALIZER, fmt, ...) do 
{  \
                                                                            ^
   drivers/thunderbolt/test.c:1837:26: note: Assuming 'ret' is not equal to 0
           KUNIT_EXPECT_TRUE(test, !ret);
                                   ^
   include/kunit/test.h:1224:48: note: expanded from macro 'KUNIT_EXPECT_TRUE'
           KUNIT_TRUE_ASSERTION(test, KUNIT_EXPECTATION, condition)
                                                         ^~~~~~~~~
   include/kunit/test.h:739:46: note: expanded from macro 'KUNIT_TRUE_ASSERTION'
           KUNIT_TRUE_MSG_ASSERTION(test, assert_type, condition, NULL)
                                                       ^~~~~~~~~
   include/kunit/test.h:733:10: note: expanded from macro 
'KUNIT_TRUE_MSG_ASSERTION'
                                 condition,                                     
  \
                                 ^~~~~~~~~
   include/kunit/test.h:721:7: note: expanded from macro 'KUNIT_UNARY_ASSERTION'
                           !!(condition) == !!expected_true,                    
  \
                              ^~~~~~~~~
   include/kunit/test.h:683:7: note: expanded from macro 'KUNIT_ASSERTION'
                              pass,                                             
  \
                              ^~~~
   drivers/thunderbolt/test.c:1837:2: note: Loop condition is false.  Exiting 
loop
           KUNIT_EXPECT_TRUE(test, !ret);
           ^
   include/kunit/test.h:1224:2: note: expanded from macro 'KUNIT_EXPECT_TRUE'
           KUNIT_TRUE_ASSERTION(test, KUNIT_EXPECTATION, condition)
           ^
   include/kunit/test.h:739:2: note: expanded from macro 'KUNIT_TRUE_ASSERTION'
           KUNIT_TRUE_MSG_ASSERTION(test, assert_type, condition, NULL)
           ^
   include/kunit/test.h:731:2: note: expanded from macro 
'KUNIT_TRUE_MSG_ASSERTION'
           KUNIT_UNARY_ASSERTION(test,                                          
  \
           ^
   include/kunit/test.h:720:2: note: expanded from macro 'KUNIT_UNARY_ASSERTION'
           KUNIT_ASSERTION(test,                                                
  \
           ^
   include/kunit/test.h:679:74: note: expanded from macro 'KUNIT_ASSERTION'
   #define KUNIT_ASSERTION(test, pass, assert_class, INITIALIZER, fmt, ...) do 
{  \
                                                                            ^
   drivers/thunderbolt/test.c:1839:2: note: Loop condition is true.  Entering 
loop body
           for (i = 0; i < ARRAY_SIZE(root_directory); i++)
           ^
   drivers/thunderbolt/test.c:1840:3: note: Array access (from variable 
'block') results in a null pointer dereference
                   KUNIT_EXPECT_EQ(test, root_directory[i], block[i]);
                   ^
   include/kunit/test.h:1264:2: note: expanded from macro 'KUNIT_EXPECT_EQ'
           KUNIT_BINARY_EQ_ASSERTION(test, KUNIT_EXPECTATION, left, right)
           ^                                                        ~~~~~
   include/kunit/test.h:901:2: note: expanded from macro 
'KUNIT_BINARY_EQ_ASSERTION'
           KUNIT_BINARY_EQ_MSG_ASSERTION(test,                                  
  \
           ^
   include/kunit/test.h:891:2: note: expanded from macro 
'KUNIT_BINARY_EQ_MSG_ASSERTION'
           KUNIT_BASE_EQ_MSG_ASSERTION(test,                                    
  \
           ^
   include/kunit/test.h:802:2: note: expanded from macro 
'KUNIT_BASE_EQ_MSG_ASSERTION'
           KUNIT_BASE_BINARY_ASSERTION(test,                                    
  \
           ^
   include/kunit/test.h:777:26: note: expanded from macro 
'KUNIT_BASE_BINARY_ASSERTION'
           typeof(right) __right = (right);                                     
  \
                                   ^~~~~~
>> include/linux/uuid.h:63:9: warning: Null pointer passed as 2nd argument to 
>> memory comparison function [clang-analyzer-unix.cstring.NullArg]
           return memcmp(u1, u2, sizeof(uuid_t)) == 0;
                  ^
   drivers/thunderbolt/test.c:1750:6: note: Assuming field 'uuid' is non-null
           if (d1->uuid) {
               ^~~~~~~~
   drivers/thunderbolt/test.c:1750:2: note: Taking true branch
           if (d1->uuid) {
           ^
   drivers/thunderbolt/test.c:1751:27: note: Assuming field 'uuid' is equal to 
null
                   KUNIT_ASSERT_TRUE(test, d2->uuid != NULL);
                                           ^
   include/kunit/test.h:1513:46: note: expanded from macro 'KUNIT_ASSERT_TRUE'
           KUNIT_TRUE_ASSERTION(test, KUNIT_ASSERTION, condition)
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~
   include/kunit/test.h:739:46: note: expanded from macro 'KUNIT_TRUE_ASSERTION'
           KUNIT_TRUE_MSG_ASSERTION(test, assert_type, condition, NULL)
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~
   include/kunit/test.h:733:10: note: expanded from macro 
'KUNIT_TRUE_MSG_ASSERTION'
                                 condition,                                     
  \
   
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/kunit/test.h:721:7: note: expanded from macro 'KUNIT_UNARY_ASSERTION'
                           !!(condition) == !!expected_true,                    
  \
   
~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/kunit/test.h:683:7: note: expanded from macro 'KUNIT_ASSERTION'
                              pass,                                             
  \
                              ^~~~
   drivers/thunderbolt/test.c:1751:3: note: Loop condition is false.  Exiting 
loop
                   KUNIT_ASSERT_TRUE(test, d2->uuid != NULL);
                   ^
   include/kunit/test.h:1513:2: note: expanded from macro 'KUNIT_ASSERT_TRUE'
           KUNIT_TRUE_ASSERTION(test, KUNIT_ASSERTION, condition)
           ^
   include/kunit/test.h:739:2: note: expanded from macro 'KUNIT_TRUE_ASSERTION'
           KUNIT_TRUE_MSG_ASSERTION(test, assert_type, condition, NULL)
           ^
   include/kunit/test.h:731:2: note: expanded from macro 
'KUNIT_TRUE_MSG_ASSERTION'
           KUNIT_UNARY_ASSERTION(test,                                          
  \
           ^
   include/kunit/test.h:720:2: note: expanded from macro 'KUNIT_UNARY_ASSERTION'
           KUNIT_ASSERTION(test,                                                
  \
           ^
   include/kunit/test.h:679:74: note: expanded from macro 'KUNIT_ASSERTION'
   #define KUNIT_ASSERTION(test, pass, assert_class, INITIALIZER, fmt, ...) do 
{  \
                                                                            ^
   drivers/thunderbolt/test.c:1752:48: note: Passing null pointer value via 2nd 
parameter 'u2'
                   KUNIT_ASSERT_TRUE(test, uuid_equal(d1->uuid, d2->uuid));
                                                                ^
   include/kunit/test.h:1513:46: note: expanded from macro 'KUNIT_ASSERT_TRUE'
           KUNIT_TRUE_ASSERTION(test, KUNIT_ASSERTION, condition)
                                                       ^~~~~~~~~
   include/kunit/test.h:739:46: note: expanded from macro 'KUNIT_TRUE_ASSERTION'
           KUNIT_TRUE_MSG_ASSERTION(test, assert_type, condition, NULL)
                                                       ^~~~~~~~~
   include/kunit/test.h:733:10: note: expanded from macro 
'KUNIT_TRUE_MSG_ASSERTION'
                                 condition,                                     
  \
                                 ^~~~~~~~~
   include/kunit/test.h:721:7: note: expanded from macro 'KUNIT_UNARY_ASSERTION'
                           !!(condition) == !!expected_true,                    
  \
                              ^~~~~~~~~
   include/kunit/test.h:683:7: note: expanded from macro 'KUNIT_ASSERTION'
                              pass,                                             
  \
                              ^~~~
   drivers/thunderbolt/test.c:1752:27: note: Calling 'uuid_equal'
                   KUNIT_ASSERT_TRUE(test, uuid_equal(d1->uuid, d2->uuid));
                                           ^
   include/kunit/test.h:1513:46: note: expanded from macro 'KUNIT_ASSERT_TRUE'
           KUNIT_TRUE_ASSERTION(test, KUNIT_ASSERTION, condition)
                                                       ^~~~~~~~~
   include/kunit/test.h:739:46: note: expanded from macro 'KUNIT_TRUE_ASSERTION'
           KUNIT_TRUE_MSG_ASSERTION(test, assert_type, condition, NULL)
                                                       ^~~~~~~~~
   include/kunit/test.h:733:10: note: expanded from macro 
'KUNIT_TRUE_MSG_ASSERTION'
                                 condition,                                     
  \
                                 ^~~~~~~~~
   include/kunit/test.h:721:7: note: expanded from macro 'KUNIT_UNARY_ASSERTION'
                           !!(condition) == !!expected_true,                    
  \
                              ^~~~~~~~~
   include/kunit/test.h:683:7: note: expanded from macro 'KUNIT_ASSERTION'
                              pass,                                             
  \
                              ^~~~
   include/linux/uuid.h:63:9: note: Null pointer passed as 2nd argument to 
memory comparison function
           return memcmp(u1, u2, sizeof(uuid_t)) == 0;
                  ^          ~~
   Suppressed 6 warnings (6 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.
   9 warnings generated.
   drivers/memstick/host/rtsx_pci_ms.c:374:3: warning: 4th function call 
argument is an uninitialized value [clang-analyzer-core.CallAndMessage]
                   dev_dbg(ms_dev(host), "int_reg: 0x%02x\n", int_reg);
                   ^
   include/linux/dev_printk.h:123:2: note: expanded from macro 'dev_dbg'
           dynamic_dev_dbg(dev, dev_fmt(fmt), ##__VA_ARGS__)
           ^
   include/linux/dynamic_debug.h:161:25: note: expanded from macro 
'dynamic_dev_dbg'
           _dynamic_func_call(fmt,__dynamic_dev_dbg,               \
                                  ^
   drivers/memstick/host/rtsx_pci_ms.c:391:32: note: Left side of '&&' is false
           struct realtek_pci_ms *host = container_of(work,
                                         ^
   include/linux/kernel.h:709:61: note: expanded from macro 'container_of'
           BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) &&   \

vim +1670 drivers/thunderbolt/test.c

15a4c7e8f916f4 Mika Westerberg 2020-05-04  1652  
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1653  static const uuid_t 
network_dir_uuid =
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1654         UUID_INIT(0xc66189ca, 
0x1cce, 0x4195,
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1655                   0xbd, 0xb8, 
0x49, 0x59, 0x2e, 0x5f, 0x5a, 0x4f);
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1656  
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1657  static void 
tb_test_property_parse(struct kunit *test)
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1658  {
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1659         struct tb_property_dir 
*dir, *network_dir;
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1660         struct tb_property *p;
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1661  
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1662         dir = 
tb_property_parse_dir(root_directory, ARRAY_SIZE(root_directory));
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1663         KUNIT_ASSERT_TRUE(test, 
dir != NULL);
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1664  
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1665         p = 
tb_property_find(dir, "foo", TB_PROPERTY_TYPE_TEXT);
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1666         KUNIT_ASSERT_TRUE(test, 
!p);
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1667  
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1668         p = 
tb_property_find(dir, "vendorid", TB_PROPERTY_TYPE_TEXT);
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1669         KUNIT_ASSERT_TRUE(test, 
p != NULL);
15a4c7e8f916f4 Mika Westerberg 2020-05-04 @1670         
KUNIT_EXPECT_STREQ(test, p->value.text, "Apple Inc.");
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1671  
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1672         p = 
tb_property_find(dir, "vendorid", TB_PROPERTY_TYPE_VALUE);
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1673         KUNIT_ASSERT_TRUE(test, 
p != NULL);
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1674         KUNIT_EXPECT_EQ(test, 
p->value.immediate, (u32)0xa27);
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1675  
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1676         p = 
tb_property_find(dir, "deviceid", TB_PROPERTY_TYPE_TEXT);
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1677         KUNIT_ASSERT_TRUE(test, 
p != NULL);
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1678         
KUNIT_EXPECT_STREQ(test, p->value.text, "Macintosh");
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1679  
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1680         p = 
tb_property_find(dir, "deviceid", TB_PROPERTY_TYPE_VALUE);
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1681         KUNIT_ASSERT_TRUE(test, 
p != NULL);
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1682         KUNIT_EXPECT_EQ(test, 
p->value.immediate, (u32)0xa);
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1683  
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1684         p = 
tb_property_find(dir, "missing", TB_PROPERTY_TYPE_DIRECTORY);
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1685         KUNIT_ASSERT_TRUE(test, 
!p);
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1686  
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1687         p = 
tb_property_find(dir, "network", TB_PROPERTY_TYPE_DIRECTORY);
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1688         KUNIT_ASSERT_TRUE(test, 
p != NULL);
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1689  
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1690         network_dir = 
p->value.dir;
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1691         KUNIT_EXPECT_TRUE(test, 
uuid_equal(network_dir->uuid, &network_dir_uuid));
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1692  
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1693         p = 
tb_property_find(network_dir, "prtcid", TB_PROPERTY_TYPE_VALUE);
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1694         KUNIT_ASSERT_TRUE(test, 
p != NULL);
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1695         KUNIT_EXPECT_EQ(test, 
p->value.immediate, (u32)0x1);
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1696  
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1697         p = 
tb_property_find(network_dir, "prtcvers", TB_PROPERTY_TYPE_VALUE);
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1698         KUNIT_ASSERT_TRUE(test, 
p != NULL);
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1699         KUNIT_EXPECT_EQ(test, 
p->value.immediate, (u32)0x1);
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1700  
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1701         p = 
tb_property_find(network_dir, "prtcrevs", TB_PROPERTY_TYPE_VALUE);
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1702         KUNIT_ASSERT_TRUE(test, 
p != NULL);
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1703         KUNIT_EXPECT_EQ(test, 
p->value.immediate, (u32)0x1);
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1704  
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1705         p = 
tb_property_find(network_dir, "prtcstns", TB_PROPERTY_TYPE_VALUE);
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1706         KUNIT_ASSERT_TRUE(test, 
p != NULL);
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1707         KUNIT_EXPECT_EQ(test, 
p->value.immediate, (u32)0x0);
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1708  
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1709         p = 
tb_property_find(network_dir, "deviceid", TB_PROPERTY_TYPE_VALUE);
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1710         KUNIT_EXPECT_TRUE(test, 
!p);
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1711         p = 
tb_property_find(network_dir, "deviceid", TB_PROPERTY_TYPE_TEXT);
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1712         KUNIT_EXPECT_TRUE(test, 
!p);
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1713  
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1714         
tb_property_free_dir(dir);
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1715  }
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1716  
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1717  static void 
tb_test_property_format(struct kunit *test)
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1718  {
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1719         struct tb_property_dir 
*dir;
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1720         ssize_t block_len;
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1721         u32 *block;
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1722         int ret, i;
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1723  
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1724         dir = 
tb_property_parse_dir(root_directory, ARRAY_SIZE(root_directory));
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1725         KUNIT_ASSERT_TRUE(test, 
dir != NULL);
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1726  
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1727         ret = 
tb_property_format_dir(dir, NULL, 0);
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1728         KUNIT_ASSERT_EQ(test, 
ret, (int)ARRAY_SIZE(root_directory));
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1729  
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1730         block_len = ret;
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1731  
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1732         block = 
kunit_kzalloc(test, block_len * sizeof(u32), GFP_KERNEL);
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1733         KUNIT_ASSERT_TRUE(test, 
block != NULL);
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1734  
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1735         ret = 
tb_property_format_dir(dir, block, block_len);
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1736         KUNIT_EXPECT_EQ(test, 
ret, 0);
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1737  
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1738         for (i = 0; i < 
ARRAY_SIZE(root_directory); i++)
15a4c7e8f916f4 Mika Westerberg 2020-05-04 @1739                 
KUNIT_EXPECT_EQ(test, root_directory[i], block[i]);
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1740  
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1741         
tb_property_free_dir(dir);
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1742  }
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1743  
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1744  static void 
compare_dirs(struct kunit *test, struct tb_property_dir *d1,
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1745                          struct 
tb_property_dir *d2)
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1746  {
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1747         struct tb_property *p1, 
*p2, *tmp;
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1748         int n1, n2, i;
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1749  
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1750         if (d1->uuid) {
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1751                 
KUNIT_ASSERT_TRUE(test, d2->uuid != NULL);
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1752                 
KUNIT_ASSERT_TRUE(test, uuid_equal(d1->uuid, d2->uuid));
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1753         } else {
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1754                 
KUNIT_ASSERT_TRUE(test, d2->uuid == NULL);
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1755         }
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1756  
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1757         n1 = 0;
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1758         
tb_property_for_each(d1, tmp)
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1759                 n1++;
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1760         KUNIT_ASSERT_NE(test, 
n1, 0);
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1761  
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1762         n2 = 0;
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1763         
tb_property_for_each(d2, tmp)
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1764                 n2++;
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1765         KUNIT_ASSERT_NE(test, 
n2, 0);
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1766  
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1767         KUNIT_ASSERT_EQ(test, 
n1, n2);
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1768  
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1769         p1 = NULL;
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1770         p2 = NULL;
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1771         for (i = 0; i < n1; 
i++) {
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1772                 p1 = 
tb_property_get_next(d1, p1);
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1773                 
KUNIT_ASSERT_TRUE(test, p1 != NULL);
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1774                 p2 = 
tb_property_get_next(d2, p2);
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1775                 
KUNIT_ASSERT_TRUE(test, p2 != NULL);
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1776  
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1777                 
KUNIT_ASSERT_STREQ(test, &p1->key[0], &p2->key[0]);
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1778                 
KUNIT_ASSERT_EQ(test, p1->type, p2->type);
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1779                 
KUNIT_ASSERT_EQ(test, p1->length, p2->length);
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1780  
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1781                 switch 
(p1->type) {
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1782                 case 
TB_PROPERTY_TYPE_DIRECTORY:
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1783                         
KUNIT_ASSERT_TRUE(test, p1->value.dir != NULL);
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1784                         
KUNIT_ASSERT_TRUE(test, p2->value.dir != NULL);
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1785                         
compare_dirs(test, p1->value.dir, p2->value.dir);
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1786                         break;
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1787  
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1788                 case 
TB_PROPERTY_TYPE_DATA:
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1789                         
KUNIT_ASSERT_TRUE(test, p1->value.data != NULL);
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1790                         
KUNIT_ASSERT_TRUE(test, p2->value.data != NULL);
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1791                         
KUNIT_ASSERT_TRUE(test,
15a4c7e8f916f4 Mika Westerberg 2020-05-04 @1792                                 
!memcmp(p1->value.data, p2->value.data,
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1793                                 
        p1->length * 4)
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1794                         );
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1795                         break;
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1796  
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1797                 case 
TB_PROPERTY_TYPE_TEXT:
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1798                         
KUNIT_ASSERT_TRUE(test, p1->value.text != NULL);
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1799                         
KUNIT_ASSERT_TRUE(test, p2->value.text != NULL);
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1800                         
KUNIT_ASSERT_STREQ(test, p1->value.text, p2->value.text);
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1801                         break;
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1802  
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1803                 case 
TB_PROPERTY_TYPE_VALUE:
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1804                         
KUNIT_ASSERT_EQ(test, p1->value.immediate,
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1805                                 
        p2->value.immediate);
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1806                         break;
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1807                 default:
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1808                         
KUNIT_FAIL(test, "unexpected property type");
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1809                         break;
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1810                 }
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1811         }
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1812  }
15a4c7e8f916f4 Mika Westerberg 2020-05-04  1813  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/[email protected]
_______________________________________________
kbuild mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to