:::::: :::::: 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