CC: [email protected] CC: [email protected] CC: [email protected] TO: Jakub Jelinek <[email protected]> CC: "Peter Zijlstra (Intel)" <[email protected]> CC: Andrew Morton <[email protected]> CC: Linux Memory Management List <[email protected]>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master head: b5013d084e03e82ceeab4db8ae8ceeaebe76b0eb commit: 2f78788b55baa3410b1ec91a576286abe1ad4d6a ilog2: improve ilog2 for constant arguments date: 11 months ago :::::: branch date: 18 hours ago :::::: commit date: 11 months ago config: riscv-randconfig-c006-20211029 (attached as .config) compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project 5db7568a6a1fcb408eb8988abdaff2a225a8eb72) reproduce (this is a W=1 build): wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # install riscv cross compiling tool for clang build # apt-get install binutils-riscv64-linux-gnu # https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=2f78788b55baa3410b1ec91a576286abe1ad4d6a git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git git fetch --no-tags linus master git checkout 2f78788b55baa3410b1ec91a576286abe1ad4d6a # save the attached .config to linux build tree COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=riscv 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/linux/ssb/ssb_driver_extif.h:200:2: note: Returning zero, which participates in a condition later return 0; ^~~~~~~~ drivers/ssb/main.c:946:6: note: Returning from 'ssb_extif_available' if (ssb_extif_available(&bus->extif)) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/ssb/main.c:946:2: note: Taking false branch if (ssb_extif_available(&bus->extif)) ^ drivers/ssb/main.c:949:11: note: Assuming field 'dev' is non-null else if (bus->chipco.dev) ^~~~~~~~~~~~~~~ drivers/ssb/main.c:949:7: note: Taking true branch else if (bus->chipco.dev) ^ drivers/ssb/main.c:955:6: note: Assuming field 'chip_id' is not equal to 21349 if (bus->chip_id == 0x5365) { ^~~~~~~~~~~~~~~~~~~~~~ drivers/ssb/main.c:955:2: note: Taking false branch if (bus->chip_id == 0x5365) { ^ drivers/ssb/main.c:958:10: note: Calling 'ssb_calc_clock_rate' rate = ssb_calc_clock_rate(plltype, clkctl_n, clkctl_m); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/ssb/main.c:849:2: note: Control jumps to 'case 65536:' at line 854 switch (plltype) { ^ drivers/ssb/main.c:860:3: note: Execution continues on line 873 break; ^ drivers/ssb/main.c:873:2: note: Control jumps to the 'default' case at line 878 switch (plltype) { ^ drivers/ssb/main.c:881:6: note: Assuming 'clock' is not equal to 0 if (!clock) ^~~~~~ drivers/ssb/main.c:881:2: note: Taking false branch if (!clock) ^ drivers/ssb/main.c:889:2: note: Control jumps to 'case 65536:' at line 890 switch (plltype) { ^ drivers/ssb/main.c:894:8: note: Calling 'clkfactor_f6_resolve' m1 = clkfactor_f6_resolve(m1); ^~~~~~~~~~~~~~~~~~~~~~~~ drivers/ssb/main.c:824:2: note: 'Default' branch taken. Execution continues on line 838 switch (v) { ^ drivers/ssb/main.c:838:2: note: Returning zero return 0; ^~~~~~~~ drivers/ssb/main.c:894:8: note: Returning from 'clkfactor_f6_resolve' m1 = clkfactor_f6_resolve(m1); ^~~~~~~~~~~~~~~~~~~~~~~~ drivers/ssb/main.c:894:3: note: The value 0 is assigned to 'm1' m1 = clkfactor_f6_resolve(m1); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/ssb/main.c:895:8: note: 'plltype' is equal to SSB_PLLTYPE_1 if ((plltype == SSB_PLLTYPE_1) || ^~~~~~~ drivers/ssb/main.c:895:34: note: Left side of '||' is true if ((plltype == SSB_PLLTYPE_1) || ^ drivers/ssb/main.c:900:8: note: Calling 'clkfactor_f6_resolve' m3 = clkfactor_f6_resolve(m3); ^~~~~~~~~~~~~~~~~~~~~~~~ drivers/ssb/main.c:824:2: note: 'Default' branch taken. Execution continues on line 838 switch (v) { ^ drivers/ssb/main.c:838:2: note: Returning zero return 0; ^~~~~~~~ drivers/ssb/main.c:900:8: note: Returning from 'clkfactor_f6_resolve' m3 = clkfactor_f6_resolve(m3); ^~~~~~~~~~~~~~~~~~~~~~~~ drivers/ssb/main.c:900:3: note: The value 0 is assigned to 'm3' m3 = clkfactor_f6_resolve(m3); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/ssb/main.c:902:3: note: Control jumps to 'case 17:' at line 911 switch (mc) { ^ drivers/ssb/main.c:912:18: note: Division by zero return (clock / (m1 * m3)); ~~~~~~^~~~~~~~~~~ drivers/ssb/main.c:1306:3: warning: Value stored to 'err' is never read [clang-analyzer-deadcode.DeadStores] err = 0; ^ ~ drivers/ssb/main.c:1306:3: note: Value stored to 'err' is never read err = 0; ^ ~ drivers/ssb/main.c:1312:3: warning: Value stored to 'err' is never read [clang-analyzer-deadcode.DeadStores] err = 0; ^ ~ drivers/ssb/main.c:1312:3: note: Value stored to 'err' is never read err = 0; ^ ~ Suppressed 3 warnings (3 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 4 warnings generated. >> net/ipv4/tcp_metrics.c:1006:41: warning: The result of the left shift is >> undefined due to shifting by '64', which is greater or equal to the width of >> type 'unsigned long' [clang-analyzer-core.UndefinedBinaryOperatorResult] size = sizeof(struct tcpm_hash_bucket) << tcp_metrics_hash_log; ^ ~~~~~~~~~~~~~~~~~~~~ net/ipv4/tcp_metrics.c:994:7: note: Calling 'net_eq' if (!net_eq(net, &init_net)) ^~~~~~~~~~~~~~~~~~~~~~ include/net/net_namespace.h:296:2: note: Returning the value 1, which participates in a condition later return 1; ^~~~~~~~ net/ipv4/tcp_metrics.c:994:7: note: Returning from 'net_eq' if (!net_eq(net, &init_net)) ^~~~~~~~~~~~~~~~~~~~~~ net/ipv4/tcp_metrics.c:994:2: note: Taking false branch if (!net_eq(net, &init_net)) ^ net/ipv4/tcp_metrics.c:998:6: note: Assuming 'slots' is not equal to 0 if (!slots) { ^~~~~~ net/ipv4/tcp_metrics.c:998:2: note: Taking false branch if (!slots) { ^ net/ipv4/tcp_metrics.c:1005:25: note: '?' condition is false tcp_metrics_hash_log = order_base_2(slots); ^ include/linux/log2.h:219:2: note: expanded from macro 'order_base_2' __builtin_constant_p(n) ? ( \ ^ net/ipv4/tcp_metrics.c:1005:25: note: Calling '__order_base_2' tcp_metrics_hash_log = order_base_2(slots); ^ include/linux/log2.h:222:2: note: expanded from macro 'order_base_2' __order_base_2(n) \ ^~~~~~~~~~~~~~~~~ include/linux/log2.h:201:9: note: Assuming 'n' is > 1 return n > 1 ? ilog2(n - 1) + 1 : 0; ^~~~~ include/linux/log2.h:201:9: note: '?' condition is true include/linux/log2.h:201:17: note: '?' condition is false return n > 1 ? ilog2(n - 1) + 1 : 0; ^ include/linux/log2.h:158:2: note: expanded from macro 'ilog2' __builtin_constant_p(n) ? \ ^ include/linux/log2.h:201:17: note: '?' condition is false return n > 1 ? ilog2(n - 1) + 1 : 0; ^ include/linux/log2.h:161:2: note: expanded from macro 'ilog2' (sizeof(n) <= 4) ? \ ^ include/linux/log2.h:201:2: note: Returning the value 64 return n > 1 ? ilog2(n - 1) + 1 : 0; ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ net/ipv4/tcp_metrics.c:1005:25: note: Returning from '__order_base_2' tcp_metrics_hash_log = order_base_2(slots); ^ include/linux/log2.h:222:2: note: expanded from macro 'order_base_2' __order_base_2(n) \ ^~~~~~~~~~~~~~~~~ net/ipv4/tcp_metrics.c:1005:2: note: The value 64 is assigned to 'tcp_metrics_hash_log' tcp_metrics_hash_log = order_base_2(slots); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ net/ipv4/tcp_metrics.c:1006:41: note: The result of the left shift is undefined due to shifting by '64', which is greater or equal to the width of type 'unsigned long' size = sizeof(struct tcpm_hash_bucket) << tcp_metrics_hash_log; ^ ~~~~~~~~~~~~~~~~~~~~ Suppressed 3 warnings (3 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 4 warnings generated. Suppressed 4 warnings (4 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 4 warnings generated. Suppressed 4 warnings (4 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. 5 warnings generated. include/linux/list.h:135:13: warning: Use of memory after it is freed [clang-analyzer-unix.Malloc] __list_del(entry->prev, entry->next); ^ fs/dlm/member.c:381:2: note: Calling 'clear_memb_list' clear_memb_list(&ls->ls_nodes_gone); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ fs/dlm/member.c:366:2: note: Loop condition is true. Entering loop body while (!list_empty(head)) { ^ fs/dlm/member.c:367:10: note: Left side of '&&' is false memb = list_entry(head->next, struct dlm_member, list); ^ include/linux/list.h:511:2: note: expanded from macro 'list_entry' container_of(ptr, type, member) ^ include/linux/kernel.h:694:61: note: expanded from macro 'container_of' BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \ ^ fs/dlm/member.c:367:10: note: Taking false branch memb = list_entry(head->next, struct dlm_member, list); ^ include/linux/list.h:511:2: note: expanded from macro 'list_entry' container_of(ptr, type, member) ^ include/linux/kernel.h:694:2: note: expanded from macro 'container_of' BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \ ^ include/linux/build_bug.h:39:37: note: expanded from macro 'BUILD_BUG_ON_MSG' vim +1006 net/ipv4/tcp_metrics.c 51c5d0c4b169bf David S. Miller 2012-07-10 988 51c5d0c4b169bf David S. Miller 2012-07-10 989 static int __net_init tcp_net_metrics_init(struct net *net) 51c5d0c4b169bf David S. Miller 2012-07-10 990 { 5815d5e7aae3cc Eric Dumazet 2012-07-19 991 size_t size; 5815d5e7aae3cc Eric Dumazet 2012-07-19 992 unsigned int slots; 51c5d0c4b169bf David S. Miller 2012-07-10 993 098a697b497e31 Eric W. Biederman 2015-03-13 994 if (!net_eq(net, &init_net)) 098a697b497e31 Eric W. Biederman 2015-03-13 995 return 0; 098a697b497e31 Eric W. Biederman 2015-03-13 996 51c5d0c4b169bf David S. Miller 2012-07-10 997 slots = tcpmhash_entries; 51c5d0c4b169bf David S. Miller 2012-07-10 998 if (!slots) { ca79b0c211af63 Arun KS 2018-12-28 999 if (totalram_pages() >= 128 * 1024) 51c5d0c4b169bf David S. Miller 2012-07-10 1000 slots = 16 * 1024; 51c5d0c4b169bf David S. Miller 2012-07-10 1001 else 51c5d0c4b169bf David S. Miller 2012-07-10 1002 slots = 8 * 1024; 51c5d0c4b169bf David S. Miller 2012-07-10 1003 } 51c5d0c4b169bf David S. Miller 2012-07-10 1004 098a697b497e31 Eric W. Biederman 2015-03-13 1005 tcp_metrics_hash_log = order_base_2(slots); 098a697b497e31 Eric W. Biederman 2015-03-13 @1006 size = sizeof(struct tcpm_hash_bucket) << tcp_metrics_hash_log; 51c5d0c4b169bf David S. Miller 2012-07-10 1007 752ade68cbd81d Michal Hocko 2017-05-08 1008 tcp_metrics_hash = kvzalloc(size, GFP_KERNEL); 098a697b497e31 Eric W. Biederman 2015-03-13 1009 if (!tcp_metrics_hash) 51c5d0c4b169bf David S. Miller 2012-07-10 1010 return -ENOMEM; 51c5d0c4b169bf David S. Miller 2012-07-10 1011 51c5d0c4b169bf David S. Miller 2012-07-10 1012 return 0; 51c5d0c4b169bf David S. Miller 2012-07-10 1013 } 51c5d0c4b169bf David S. Miller 2012-07-10 1014 :::::: The code at line 1006 was first introduced by commit :::::: 098a697b497e3154a1a583c1d34c67568acaadcc tcp_metrics: Use a single hash table for all network namespaces. :::::: TO: Eric W. Biederman <[email protected]> :::::: CC: David S. Miller <[email protected]> --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/[email protected]
.config.gz
Description: application/gzip
_______________________________________________ kbuild mailing list -- [email protected] To unsubscribe send an email to [email protected]
