:::::: :::::: Manual check reason: "low confidence bisect report" :::::: Manual check reason: "low confidence static check first_new_problem: fs/f2fs/f2fs.h:2376:9: warning: use of uninitialized value 'ino' [CWE-457] [-Wanalyzer-use-of-uninitialized-value]" :::::: BCC: lkp(a)intel.com CC: kbuild-all(a)lists.01.org CC: Linux Memory Management List TO: Chao Yu , Chao Yu CC: Jaegeuk Kim tree: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master head: f117c01187301a087412bd6697fcf5463cb427d8 commit: 64c11570d64d143fa212c2739bf743e8e8b9095c [6241/7172] f2fs: fix to do sanity check on summary info :::::: branch date: 18 hours ago :::::: commit date: 2 days ago config: arm-randconfig-c002-20220911 (https://download.01.org/0day-ci/archive/20220915/202209150827.Ldph2OJT-lkp(a)intel.com/config) compiler: arm-linux-gnueabi-gcc (GCC) 12.1.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/next/linux-next.git/commit/?id=64c11570d64d143fa212c2739bf743e8e8b9095c git remote add linux-next https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git git fetch --no-tags linux-next master git checkout 64c11570d64d143fa212c2739bf743e8e8b9095c # save the config file COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross ARCH=arm KBUILD_USERCFLAGS='-fanalyzer -Wno-error' If you fix the issue, kindly add following tag where applicable Reported-by: kernel test robot gcc_analyzer warnings: (new ones prefixed by >>) | | ~ | | | | | (34) following 'false' branch... |...... | 763 | if (!is_recoverable_dnode(page)) { | | ~ ~~~~~~~~~~~~~~~~~~~~~~~~~~ | | | | | | | (35) ...to here | | (36) following 'true' branch... | 'recover_data': event 37 | |include/asm-generic/memory_model.h:19:57: | 19 | #define __page_to_pfn(page) ((unsigned long)((page) - mem_map) + \ | | ^ | | | | | (37) ...to here arch/arm/include/asm/memory.h:328:71: note: in definition of macro '__va' | 328 | #define __va(x) ((void *)__phys_to_virt((phys_addr_t)(x))) | | ^ include/linux/mm.h:114:30: note: in expansion of macro 'PFN_PHYS' | 114 | #define page_to_virt(x) __va(PFN_PHYS(page_to_pfn(x))) | | ^~~~~~~~ include/asm-generic/memory_model.h:52:21: note: in expansion of macro '__page_to_pfn' | 52 | #define page_to_pfn __page_to_pfn | | ^~~~~~~~~~~~~ include/linux/mm.h:114:39: note: in expansion of macro 'page_to_pfn' | 114 | #define page_to_virt(x) __va(PFN_PHYS(page_to_pfn(x))) | | ^~~~~~~~~~~ include/linux/mm.h:1682:16: note: in expansion of macro 'page_to_virt' | 1682 | return page_to_virt(page); | | ^~~~~~~~~~~~ | 'recover_data': event 38 | |include/linux/list.h:675:14: | 675 | !list_entry_is_head(pos, head, member); \ | | ^ | | | | | (38) following 'true' branch... fs/f2fs/recovery.c:71:9: note: in expansion of macro 'list_for_each_entry' | 71 | list_for_each_entry(entry, head, list) | | ^~~~~~~~~~~~~~~~~~~ | 'recover_data': events 39-40 | | 72 | if (entry->inode->i_ino == ino) | | ~~~~~^~~~~~~ | | | | | (39) ...to here |...... | 769 | if (!entry) | | ~ | | | | | (40) following 'false' branch... | 'recover_data': event 41 | |fs/f2fs/f2fs.h:2847:37: | 2847 | #define RAW_IS_INODE(p) ((p)->footer.nid == (p)->footer.ino) | | ~~~~~~~~~~~^~~~ | | | | | (41) ...to here fs/f2fs/f2fs.h:2853:16: note: in expansion of macro 'RAW_IS_INODE' | 2853 | return RAW_IS_INODE(p); | | ^~~~~~~~~~~~ | 'recover_data': events 42-46 | |fs/f2fs/recovery.c:776:20: | 776 | if (IS_INODE(page)) { | | ^ | | | | | (42) following 'false' branch... |...... | 783 | if (entry->last_dentry == blkaddr) { | | ~~~~~~~~~~~~~~~~~~~ | | | | | | | (43) ...to here | | (44) following 'true' branch... | 784 | err = recover_dentry(entry->inode, page, dir_list); | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | | | | (45) ...to here | | (46) calling 'recover_dentry' from 'recover_data' | +--> 'recover_dentry': events 47-48 | | 167 | static int recover_dentry(struct inode *inode, struct page *ipage, | | ^~~~~~~~~~~~~~ | | | | | (47) entry to 'recover_dentry' |...... | 175 | struct page *page; | | ~~~~ | | | | | (48) use of uninitialized value '' here | In file included from fs/f2fs/recovery.c:12: fs/f2fs/recovery.c: In function 'check_index_in_prev_nodes': >> fs/f2fs/f2fs.h:2376:9: warning: use of uninitialized value 'ino' [CWE-457] [-Wanalyzer-use-of-uninitialized-value] 2376 | f2fs_printk(sbi, KERN_ERR fmt, ##__VA_ARGS__) | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ fs/f2fs/recovery.c:508:17: note: in expansion of macro 'f2fs_err' 508 | f2fs_err(sbi, "Inconsistent ofs_in_node:%u in summary, ino:%u, nid:%u, max:%u", | ^~~~~~~~ 'f2fs_recover_fsync_data': events 1-2 | | 813 | int f2fs_recover_fsync_data(struct f2fs_sb_info *sbi, bool check_only) | | ^~~~~~~~~~~~~~~~~~~~~~~ | | | | | (1) entry to 'f2fs_recover_fsync_data' |...... | 844 | err = find_fsync_dnodes(sbi, &inode_list, check_only); | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | | | | (2) calling 'find_fsync_dnodes' from 'f2fs_recover_fsync_data' | +--> 'find_fsync_dnodes': event 3 | | 363 | static int find_fsync_dnodes(struct f2fs_sb_info *sbi, struct list_head *head, | | ^~~~~~~~~~~~~~~~~ | | | | | (3) entry to 'find_fsync_dnodes' | 'find_fsync_dnodes': event 4 | |fs/f2fs/segment.h:71:46: | 71 | (SM_I(sbi) ? SM_I(sbi)->seg0_blkaddr : \ | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | | | | (4) following 'true' branch... | 72 | le32_to_cpu(F2FS_RAW_SUPER(sbi)->segment0_blkaddr)) | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ fs/f2fs/segment.h:86:34: note: in expansion of macro 'SEG0_BLKADDR' | 86 | #define START_BLOCK(sbi, segno) (SEG0_BLKADDR(sbi) + \ | | ^~~~~~~~~~~~ fs/f2fs/segment.h:90:10: note: in expansion of macro 'START_BLOCK' | 90 | (START_BLOCK(sbi, (curseg)->segno) + (curseg)->next_blkoff) | | ^~~~~~~~~~~ fs/f2fs/recovery.c:377:19: note: in expansion of macro 'NEXT_FREE_BLKADDR' | 377 | blkaddr = NEXT_FREE_BLKADDR(sbi, curseg); | | ^~~~~~~~~~~~~~~~~ | 'find_fsync_dnodes': event 5 | |fs/f2fs/segment.h:71:46: | 71 | (SM_I(sbi) ? SM_I(sbi)->seg0_blkaddr : \ | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | | | | (5) ...to here | 72 | le32_to_cpu(F2FS_RAW_SUPER(sbi)->segment0_blkaddr)) | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ fs/f2fs/segment.h:86:34: note: in expansion of macro 'SEG0_BLKADDR' | 86 | #define START_BLOCK(sbi, segno) (SEG0_BLKADDR(sbi) + \ | | ^~~~~~~~~~~~ fs/f2fs/segment.h:90:10: note: in expansion of macro 'START_BLOCK' | 90 | (START_BLOCK(sbi, (curseg)->segno) + (curseg)->next_blkoff) | | ^~~~~~~~~~~ fs/f2fs/recovery.c:377:19: note: in expansion of macro 'NEXT_FREE_BLKADDR' | 377 | blkaddr = NEXT_FREE_BLKADDR(sbi, curseg); | | ^~~~~~~~~~~~~~~~~ | 'find_fsync_dnodes': event 6 | | 392 | f2fs_put_page(page, 1); | | ^~~~~~~~~~~~~~~~~~~~~~ | | | | | (6) calling 'f2fs_put_page' from 'find_fsync_dnodes' | +--> 'f2fs_put_page': events 7-10 | |fs/f2fs/f2fs.h:2750:20: | 2750 | static inline void f2fs_put_page(struct page *page, int unlock) | | ^~~~~~~~~~~~~ | | | | | (7) entry to 'f2fs_put_page' | 2751 | { | 2752 | if (!page) | | ~ | | | | | (8) following 'false' branch (when 'page' is non-NULL)... |...... | 2755 | if (unlock) { | | ~ | | | | | (9) ...to here | | (10) following 'true' branch (when 'unlock != 0')... | 'f2fs_put_page': event 11 | |include/asm-generic/rwonce.h:44:26: | 44 | #define __READ_ONCE(x) (*(const volatile __unqual_scalar_typeof(x) *)&(x)) | | ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | | | | (11) ...to here include/asm-generic/rwonce.h:50:9: note: in expansion of macro '__READ_ONCE' | 50 | __READ_ONCE(x); \ | | ^~~~~~~~~~~ include/linux/page-flags.h:253:30: note: in expansion of macro 'READ_ONCE' | 253 | unsigned long head = READ_ONCE(page->compound_head); vim +/ino +2376 fs/f2fs/f2fs.h dcbb4c10e6d9693 Joe Perches 2019-06-18 2374 dcbb4c10e6d9693 Joe Perches 2019-06-18 2375 #define f2fs_err(sbi, fmt, ...) \ dcbb4c10e6d9693 Joe Perches 2019-06-18 @2376 f2fs_printk(sbi, KERN_ERR fmt, ##__VA_ARGS__) dcbb4c10e6d9693 Joe Perches 2019-06-18 2377 #define f2fs_warn(sbi, fmt, ...) \ dcbb4c10e6d9693 Joe Perches 2019-06-18 2378 f2fs_printk(sbi, KERN_WARNING fmt, ##__VA_ARGS__) dcbb4c10e6d9693 Joe Perches 2019-06-18 2379 #define f2fs_notice(sbi, fmt, ...) \ dcbb4c10e6d9693 Joe Perches 2019-06-18 2380 f2fs_printk(sbi, KERN_NOTICE fmt, ##__VA_ARGS__) dcbb4c10e6d9693 Joe Perches 2019-06-18 2381 #define f2fs_info(sbi, fmt, ...) \ dcbb4c10e6d9693 Joe Perches 2019-06-18 2382 f2fs_printk(sbi, KERN_INFO fmt, ##__VA_ARGS__) dcbb4c10e6d9693 Joe Perches 2019-06-18 2383 #define f2fs_debug(sbi, fmt, ...) \ dcbb4c10e6d9693 Joe Perches 2019-06-18 2384 f2fs_printk(sbi, KERN_DEBUG fmt, ##__VA_ARGS__) dcbb4c10e6d9693 Joe Perches 2019-06-18 2385 :::::: The code at line 2376 was first introduced by commit :::::: dcbb4c10e6d9693cc9d6fa493b4d130b66a60c7d f2fs: introduce f2fs_ macros to wrap f2fs_printk() :::::: TO: Joe Perches :::::: CC: Jaegeuk Kim -- 0-DAY CI Kernel Test Service https://01.org/lkp