:::::: 
:::::: Manual check reason: "low confidence bisect report"
:::::: Manual check reason: "low confidence static check warning: 
fs/fscache/cookie.c:187:17: warning: use of NULL 'aux_data' where non-null 
expected [CWE-476] [-Wanalyzer-null-argument]"
:::::: 

CC: kbuild-...@lists.01.org
BCC: l...@intel.com
CC: linux-ker...@vger.kernel.org
TO: David Howells <dhowe...@redhat.com>
CC: Jeff Layton <jlay...@kernel.org>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 
master
head:   0840a7914caa14315a3191178a9f72c742477860
commit: 7f3283aba39a0f395700c3b5defa4ec49d9914b3 fscache: Implement cookie 
registration
date:   6 months ago
:::::: branch date: 11 hours ago
:::::: commit date: 6 months ago
config: arm-randconfig-c002-20220624
compiler: arm-linux-gnueabi-gcc (GCC) 11.3.0
reproduce (this is a W=1 build):
        wget 
https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O 
~/bin/make.cross
        chmod +x ~/bin/make.cross
        # 
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=7f3283aba39a0f395700c3b5defa4ec49d9914b3
        git remote add linus 
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
        git fetch --no-tags linus master
        git checkout 7f3283aba39a0f395700c3b5defa4ec49d9914b3
        # save the config file
         ARCH=arm KBUILD_USERCFLAGS='-fanalyzer -Wno-error' 

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


gcc-analyzer warnings: (new ones prefixed by >>)
              |      |            (15) following 'false' branch...
              |......
              |  189 |                 cookie->aux = kmemdup(aux_data, 
cookie->aux_len, GFP_KERNEL);
              |      |                               
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
              |      |                               |
              |      |                               (16) ...to here
              |  190 |                 if (!cookie->aux)
              |      |                    ~
              |      |                    |
              |      |                    (17) following 'false' branch...
              |
            'fscache_alloc_cookie': event 18
              |
              |include/asm-generic/rwonce.h:55:37:
              |   55 |         *(volatile typeof(x) *)&(x) = (val);             
               \
              |      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
              |      |                                     |
              |      |                                     (18) ...to here
   include/asm-generic/rwonce.h:61:9: note: in expansion of macro '__WRITE_ONCE'
              |   61 |         __WRITE_ONCE(x, val);                            
               \
              |      |         ^~~~~~~~~~~~
   arch/arm/include/asm/atomic.h:26:33: note: in expansion of macro 'WRITE_ONCE'
              |   26 | #define arch_atomic_set(v,i)    
WRITE_ONCE(((v)->counter), (i))
              |      |                                 ^~~~~~~~~~
   include/linux/atomic/atomic-instrumented.h:42:9: note: in expansion of macro 
'arch_atomic_set'
              |   42 |         arch_atomic_set(v, i);
              |      |         ^~~~~~~~~~~~~~~
              |
       <------+
       |
     '__fscache_acquire_cookie.part.0': events 19-22
       |
       |fs/fscache/cookie.c:300:18:
       |  300 |         cookie = fscache_alloc_cookie(volume, advice,
       |      |                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
       |      |                  |
       |      |                  (19) returning to 
'__fscache_acquire_cookie.part.0' from 'fscache_alloc_cookie'
       |  301 |                                       index_key, index_key_len,
       |      |                                       ~~~~~~~~~~~~~~~~~~~~~~~~~
       |  302 |                                       aux_data, aux_data_len,
       |      |                                       ~~~~~~~~~~~~~~~~~~~~~~~
       |  303 |                                       object_size);
       |      |                                       ~~~~~~~~~~~~
       |  304 |         if (!cookie) {
       |      |            ~      
       |      |            |
       |      |            (20) following 'false' branch (when 'cookie' is 
non-NULL)...
       |......
       |  309 |         if (!fscache_hash_cookie(cookie)) {
       |      |              ~~~~~~~~~~~~~~~~~~~~~~~~~~~
       |      |              |
       |      |              (21) ...to here
       |      |              (22) calling 'fscache_hash_cookie' from 
'__fscache_acquire_cookie.part.0'
       |
       +--> 'fscache_hash_cookie': event 23
              |
              |  231 | static bool fscache_hash_cookie(struct fscache_cookie 
*candidate)
              |      |             ^~~~~~~~~~~~~~~~~~~
              |      |             |
              |      |             (23) entry to 'fscache_hash_cookie'
              |
            'fscache_hash_cookie': event 24
              |
              |include/linux/list_bl.h:171:18:
              |  171 |              pos &&                                      
               \
   fs/fscache/cookie.c:242:9: note: in expansion of macro 
'hlist_bl_for_each_entry'
              |  242 |         hlist_bl_for_each_entry(cursor, p, h, hash_link) 
{
              |      |         ^~~~~~~~~~~~~~~~~~~~~~~
              |
            'fscache_hash_cookie': events 25-26
              |
              |  252 |         fscache_get_volume(candidate->volume, 
fscache_volume_get_cookie);
              |      |         
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
              |      |         |
              |      |         (25) ...to here
              |  253 |         atomic_inc(&candidate->volume->n_cookies);
              |  254 |         hlist_bl_add_head(&candidate->hash_link, h);
              |      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
              |      |         |
              |      |         (26) calling 'hlist_bl_add_head' from 
'fscache_hash_cookie'
              |
              +--> 'hlist_bl_add_head': events 27-30
                     |
                     |include/linux/list_bl.h:77:20:
                     |   77 | static inline void hlist_bl_add_head(struct 
hlist_bl_node *n,
                     |      |                    ^~~~~~~~~~~~~~~~~
                     |      |                    |
                     |      |                    (27) entry to 
'hlist_bl_add_head'
                     |......
                     |   83 |         if (first)
                     |      |            ~        
                     |      |            |
                     |      |            (28) following 'true' branch...
                     |   84 |                 first->pprev = &n->next;
                     |      |                 ~~~~~~~~~~~~~~~~~~~~~~~
                     |      |                              | |
                     |      |                              | (29) ...to here
                     |      |                              (30) dereference of 
NULL '(struct hlist_bl_node *)((long unsigned int)*h.first & 4294967294)'
                     |
   include/linux/list_bl.h: In function 'fscache_alloc_cookie':
>> fs/fscache/cookie.c:187:17: warning: use of NULL 'aux_data' where non-null 
>> expected [CWE-476] [-Wanalyzer-null-argument]
     187 |                 memcpy(cookie->inline_aux, aux_data, 
cookie->aux_len);
         |                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     '__fscache_acquire_cookie.part.0': events 1-2
       |
       |  280 | struct fscache_cookie *__fscache_acquire_cookie(
       |      |                        ^~~~~~~~~~~~~~~~~~~~~~~~
       |      |                        |
       |      |                        (1) entry to 
'__fscache_acquire_cookie.part.0'
       |......
       |  300 |         cookie = fscache_alloc_cookie(volume, advice,
       |      |                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
       |      |                  |
       |      |                  (2) calling 'fscache_alloc_cookie' from 
'__fscache_acquire_cookie.part.0'
       |  301 |                                       index_key, index_key_len,
       |      |                                       ~~~~~~~~~~~~~~~~~~~~~~~~~
       |  302 |                                       aux_data, aux_data_len,
       |      |                                       ~~~~~~~~~~~~~~~~~~~~~~~
       |  303 |                                       object_size);
       |      |                                       ~~~~~~~~~~~~
       |
       +--> 'fscache_alloc_cookie': events 3-6
              |
              |  160 | static struct fscache_cookie *fscache_alloc_cookie(
              |      |                               ^~~~~~~~~~~~~~~~~~~~
              |      |                               |
              |      |                               (3) entry to 
'fscache_alloc_cookie'
              |......
              |  171 |         if (!cookie)
              |      |            ~                   
              |      |            |
              |      |            (4) following 'false' branch...
              |......
              |  175 |         cookie->volume          = volume;
              |      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
              |      |                                 |
              |      |                                 (5) ...to here
              |......
              |  183 |         if (fscache_set_key(cookie, index_key, 
index_key_len) < 0)
              |      |             
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
              |      |             |
              |      |             (6) calling 'fscache_set_key' from 
'fscache_alloc_cookie'
              |
              +--> 'fscache_set_key': events 7-9
                     |
                     |  112 | static int fscache_set_key(struct fscache_cookie 
*cookie,
                     |      |            ^~~~~~~~~~~~~~~
                     |      |            |
                     |      |            (7) entry to 'fscache_set_key'
                     |......
                     |  120 |         if (index_key_len > 
sizeof(cookie->inline_key)) {
                     |      |            ~
                     |      |            |
                     |      |            (8) following 'false' branch (when 
'index_key_len <= 16')...
                     |......
                     |  126 |                 buf = cookie->inline_key;
                     |      |                 ~~~~~~~~~~~~~~~~~~~~~~~~
                     |      |                     |
                     |      |                     (9) ...to here
                     |
              <------+
              |
            'fscache_alloc_cookie': events 10-15
              |
              |  183 |         if (fscache_set_key(cookie, index_key, 
index_key_len) < 0)
              |      |            
~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
              |      |            ||
              |      |            |(10) returning to 'fscache_alloc_cookie' 
from 'fscache_set_key'
              |      |            (11) following 'false' branch...
              |......
              |  186 |         if (cookie->aux_len <= 
sizeof(cookie->inline_aux)) {
              |      |            ~~~~~~~~~~~~~~~~
              |      |            |      |
              |      |            |      (12) ...to here
              |      |            (13) following 'true' branch...
              |  187 |                 memcpy(cookie->inline_aux, aux_data, 
cookie->aux_len);
              |      |                 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
              |      |                 |            |
              |      |                 |            (14) ...to here
              |      |                 (15) argument 2 ('aux_data') NULL where 
non-null expected
              |
   In file included from include/linux/string.h:20,
                    from include/linux/bitmap.h:10,
                    from include/linux/cpumask.h:12,
                    from include/linux/mm_types_task.h:14,
                    from include/linux/mm_types.h:5,
                    from include/linux/buildid.h:5,
                    from include/linux/module.h:14,
                    from fs/fscache/cookie.c:12:
   arch/arm/include/asm/string.h:20:15: note: argument 2 of 'memcpy' must be 
non-null
      20 | extern void * memcpy(void *, const void *, __kernel_size_t);
         |               ^~~~~~

vim +/aux_data +187 fs/fscache/cookie.c

7f3283aba39a0f David Howells 2021-10-20  156  
7f3283aba39a0f David Howells 2021-10-20  157  /*
7f3283aba39a0f David Howells 2021-10-20  158   * Allocate a cookie.
7f3283aba39a0f David Howells 2021-10-20  159   */
7f3283aba39a0f David Howells 2021-10-20  160  static struct fscache_cookie 
*fscache_alloc_cookie(
7f3283aba39a0f David Howells 2021-10-20  161    struct fscache_volume *volume,
7f3283aba39a0f David Howells 2021-10-20  162    u8 advice,
7f3283aba39a0f David Howells 2021-10-20  163    const void *index_key, size_t 
index_key_len,
7f3283aba39a0f David Howells 2021-10-20  164    const void *aux_data, size_t 
aux_data_len,
7f3283aba39a0f David Howells 2021-10-20  165    loff_t object_size)
7f3283aba39a0f David Howells 2021-10-20  166  {
7f3283aba39a0f David Howells 2021-10-20  167    struct fscache_cookie *cookie;
7f3283aba39a0f David Howells 2021-10-20  168  
7f3283aba39a0f David Howells 2021-10-20  169    /* allocate and initialise a 
cookie */
7f3283aba39a0f David Howells 2021-10-20  170    cookie = 
kmem_cache_zalloc(fscache_cookie_jar, GFP_KERNEL);
7f3283aba39a0f David Howells 2021-10-20  171    if (!cookie)
7f3283aba39a0f David Howells 2021-10-20  172            return NULL;
7f3283aba39a0f David Howells 2021-10-20  173    
fscache_stat(&fscache_n_cookies);
7f3283aba39a0f David Howells 2021-10-20  174  
7f3283aba39a0f David Howells 2021-10-20  175    cookie->volume          = 
volume;
7f3283aba39a0f David Howells 2021-10-20  176    cookie->advice          = 
advice;
7f3283aba39a0f David Howells 2021-10-20  177    cookie->key_len         = 
index_key_len;
7f3283aba39a0f David Howells 2021-10-20  178    cookie->aux_len         = 
aux_data_len;
7f3283aba39a0f David Howells 2021-10-20  179    cookie->object_size     = 
object_size;
7f3283aba39a0f David Howells 2021-10-20  180    if (object_size == 0)
7f3283aba39a0f David Howells 2021-10-20  181            
__set_bit(FSCACHE_COOKIE_NO_DATA_TO_READ, &cookie->flags);
7f3283aba39a0f David Howells 2021-10-20  182  
7f3283aba39a0f David Howells 2021-10-20  183    if (fscache_set_key(cookie, 
index_key, index_key_len) < 0)
7f3283aba39a0f David Howells 2021-10-20  184            goto nomem;
7f3283aba39a0f David Howells 2021-10-20  185  
7f3283aba39a0f David Howells 2021-10-20  186    if (cookie->aux_len <= 
sizeof(cookie->inline_aux)) {
7f3283aba39a0f David Howells 2021-10-20 @187            
memcpy(cookie->inline_aux, aux_data, cookie->aux_len);
7f3283aba39a0f David Howells 2021-10-20  188    } else {
7f3283aba39a0f David Howells 2021-10-20  189            cookie->aux = 
kmemdup(aux_data, cookie->aux_len, GFP_KERNEL);
7f3283aba39a0f David Howells 2021-10-20  190            if (!cookie->aux)
7f3283aba39a0f David Howells 2021-10-20  191                    goto nomem;
7f3283aba39a0f David Howells 2021-10-20  192    }
7f3283aba39a0f David Howells 2021-10-20  193  
7f3283aba39a0f David Howells 2021-10-20  194    refcount_set(&cookie->ref, 1);
7f3283aba39a0f David Howells 2021-10-20  195    cookie->debug_id = 
atomic_inc_return(&fscache_cookie_debug_id);
7f3283aba39a0f David Howells 2021-10-20  196    cookie->state = 
FSCACHE_COOKIE_STATE_QUIESCENT;
7f3283aba39a0f David Howells 2021-10-20  197    spin_lock_init(&cookie->lock);
7f3283aba39a0f David Howells 2021-10-20  198    
INIT_LIST_HEAD(&cookie->commit_link);
7f3283aba39a0f David Howells 2021-10-20  199    INIT_WORK(&cookie->work, NULL 
/* PLACEHOLDER */);
7f3283aba39a0f David Howells 2021-10-20  200  
7f3283aba39a0f David Howells 2021-10-20  201    
write_lock(&fscache_cookies_lock);
7f3283aba39a0f David Howells 2021-10-20  202    
list_add_tail(&cookie->proc_link, &fscache_cookies);
7f3283aba39a0f David Howells 2021-10-20  203    
write_unlock(&fscache_cookies_lock);
7f3283aba39a0f David Howells 2021-10-20  204    fscache_see_cookie(cookie, 
fscache_cookie_new_acquire);
7f3283aba39a0f David Howells 2021-10-20  205    return cookie;
7f3283aba39a0f David Howells 2021-10-20  206  
7f3283aba39a0f David Howells 2021-10-20  207  nomem:
7f3283aba39a0f David Howells 2021-10-20  208    fscache_free_cookie(cookie);
7f3283aba39a0f David Howells 2021-10-20  209    return NULL;
7f3283aba39a0f David Howells 2021-10-20  210  }
7f3283aba39a0f David Howells 2021-10-20  211  

-- 
0-DAY CI Kernel Test Service
https://01.org/lkp
_______________________________________________
kbuild mailing list -- kbuild@lists.01.org
To unsubscribe send an email to kbuild-le...@lists.01.org

Reply via email to