CC: [email protected] CC: [email protected] In-Reply-To: <3be4e9906eafe7efb2326e47f75ef26cc1031427.1642320655.git.geliang.t...@suse.com> References: <3be4e9906eafe7efb2326e47f75ef26cc1031427.1642320655.git.geliang.t...@suse.com> TO: Geliang Tang <[email protected]> TO: [email protected] CC: Geliang Tang <[email protected]>
Hi Geliang, Thank you for the patch! Perhaps something to improve: [auto build test WARNING on mptcp/export] [cannot apply to shuah-kselftest/next linus/master v5.16 next-20220116] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch] url: https://github.com/0day-ci/linux/commits/Geliang-Tang/set-flags-and-selftests/20220116-162051 base: https://github.com/multipath-tcp/mptcp_net-next.git export :::::: branch date: 17 hours ago :::::: commit date: 17 hours ago config: x86_64-randconfig-c007 (https://download.01.org/0day-ci/archive/20220117/[email protected]/config) compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project c63a3175c2947e8c1a2d3bbe16a8586600705c54) 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://github.com/0day-ci/linux/commit/019a14644e4d438da92165724463810bca38eeec git remote add linux-review https://github.com/0day-ci/linux git fetch --no-tags linux-review Geliang-Tang/set-flags-and-selftests/20220116-162051 git checkout 019a14644e4d438da92165724463810bca38eeec # save the config file to linux build tree COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=x86_64 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 >>) net/mptcp/pm_netlink.c:1783:2: note: Taking false branch if (addr.addr.family == AF_UNSPEC) { ^ net/mptcp/pm_netlink.c:1791:7: note: 'entry' is non-null if (!entry) { ^~~~~ net/mptcp/pm_netlink.c:1791:2: note: Taking false branch if (!entry) { ^ net/mptcp/pm_netlink.c:1795:49: note: Left side of '&&' is false if ((addr.flags & MPTCP_PM_ADDR_FLAG_FULLMESH) && ^ net/mptcp/pm_netlink.c:1806:2: note: Calling 'mptcp_nl_set_flags' mptcp_nl_set_flags(net, &addr.addr, bkup, changed); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ net/mptcp/pm_netlink.c:1743:9: note: Assuming the condition is true while ((msk = mptcp_token_iter_next(net, &s_slot, &s_num)) != NULL) { ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ net/mptcp/pm_netlink.c:1743:2: note: Loop condition is true. Entering loop body while ((msk = mptcp_token_iter_next(net, &s_slot, &s_num)) != NULL) { ^ net/mptcp/pm_netlink.c:1746:7: note: Assuming the condition is false if (list_empty(&msk->conn_list) || mptcp_pm_is_userspace(msk)) ^~~~~~~~~~~~~~~~~~~~~~~~~~~ net/mptcp/pm_netlink.c:1746:7: note: Left side of '||' is false net/mptcp/pm_netlink.c:1746:3: note: Taking false branch if (list_empty(&msk->conn_list) || mptcp_pm_is_userspace(msk)) ^ net/mptcp/pm_netlink.c:1751:7: note: Assuming the condition is true if (changed & MPTCP_PM_ADDR_FLAG_BACKUP) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ net/mptcp/pm_netlink.c:1751:3: note: Taking true branch if (changed & MPTCP_PM_ADDR_FLAG_BACKUP) ^ net/mptcp/pm_netlink.c:1752:10: note: Calling 'mptcp_pm_nl_mp_prio_send_ack' ret = mptcp_pm_nl_mp_prio_send_ack(msk, addr, bkup); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ net/mptcp/pm_netlink.c:718:2: note: Taking false branch pr_debug("bkup=%d", bkup); ^ include/linux/printk.h:580:2: note: expanded from macro 'pr_debug' no_printk(KERN_DEBUG pr_fmt(fmt), ##__VA_ARGS__) ^ include/linux/printk.h:131:2: note: expanded from macro 'no_printk' if (0) \ ^ net/mptcp/pm_netlink.c:720:2: note: Loop condition is true. Entering loop body mptcp_for_each_subflow(msk, subflow) { ^ net/mptcp/protocol.h:304:2: note: expanded from macro 'mptcp_for_each_subflow' list_for_each_entry(__subflow, &((__msk)->conn_list), node) ^ include/linux/list.h:630:2: note: expanded from macro 'list_for_each_entry' for (pos = list_first_entry(head, typeof(*pos), member); \ ^ net/mptcp/pm_netlink.c:725:3: note: Calling 'local_address' local_address((struct sock_common *)ssk, &local); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ net/mptcp/pm_netlink.c:101:6: note: Assuming field 'family' is not equal to AF_INET if (addr->family == AF_INET) ^~~~~~~~~~~~~~~~~~~~~~~ net/mptcp/pm_netlink.c:101:2: note: Taking false branch if (addr->family == AF_INET) ^ net/mptcp/pm_netlink.c:104:11: note: Assuming field 'family' is not equal to AF_INET6 else if (addr->family == AF_INET6) ^~~~~~~~~~~~~~~~~~~~~~~~ net/mptcp/pm_netlink.c:104:7: note: Taking false branch else if (addr->family == AF_INET6) ^ net/mptcp/pm_netlink.c:725:3: note: Returning from 'local_address' local_address((struct sock_common *)ssk, &local); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ net/mptcp/pm_netlink.c:726:8: note: Calling 'addresses_equal' if (!addresses_equal(&local, addr, addr->port)) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ net/mptcp/pm_netlink.c:63:6: note: Assuming 'a->family' is not equal to 'b->family' if (a->family == b->family) { ^~~~~~~~~~~~~~~~~~~~~~ net/mptcp/pm_netlink.c:63:2: note: Taking false branch if (a->family == b->family) { ^ net/mptcp/pm_netlink.c:69:16: note: Field 'family' is not equal to AF_INET } else if (a->family == AF_INET) { ^ net/mptcp/pm_netlink.c:69:9: note: Taking false branch } else if (a->family == AF_INET) { ^ net/mptcp/pm_netlink.c:72:13: note: Assuming field 'family' is equal to AF_INET } else if (b->family == AF_INET) { ^~~~~~~~~~~~~~~~~~~~ net/mptcp/pm_netlink.c:72:9: note: Taking true branch } else if (b->family == AF_INET) { ^ net/mptcp/pm_netlink.c:73:7: note: Calling 'ipv6_addr_v4mapped' if (ipv6_addr_v4mapped(&a->addr6)) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/net/ipv6.h:698:43: note: The left operand of '^' is a garbage value (__force unsigned long)(a->s6_addr32[2] ^ ~~~~~~~~~~~~~~~ ^ >> net/mptcp/pm_netlink.c:1213:6: warning: Branch condition evaluates to a >> garbage value [clang-analyzer-core.uninitialized.Branch] if (addr.addr.port && !(addr.flags & MPTCP_PM_ADDR_FLAG_SIGNAL)) { ^~~~~~~~~~~~~~ net/mptcp/pm_netlink.c:1209:8: note: Calling 'mptcp_pm_parse_addr' ret = mptcp_pm_parse_addr(attr, info, true, &addr); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ net/mptcp/pm_netlink.c:1107:6: note: Assuming 'attr' is non-null if (!attr) { ^~~~~ net/mptcp/pm_netlink.c:1107:2: note: Taking false branch if (!attr) { ^ net/mptcp/pm_netlink.c:1115:6: note: Assuming 'err' is not equal to 0 if (err) ^~~ net/mptcp/pm_netlink.c:1115:2: note: Taking true branch if (err) ^ net/mptcp/pm_netlink.c:1116:3: note: Returning without writing to 'entry->addr.port' return err; ^ net/mptcp/pm_netlink.c:1209:8: note: Returning from 'mptcp_pm_parse_addr' ret = mptcp_pm_parse_addr(attr, info, true, &addr); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ net/mptcp/pm_netlink.c:1210:6: note: Assuming 'ret' is >= 0 if (ret < 0) ^~~~~~~ net/mptcp/pm_netlink.c:1210:2: note: Taking false branch if (ret < 0) ^ net/mptcp/pm_netlink.c:1213:6: note: Branch condition evaluates to a garbage value if (addr.addr.port && !(addr.flags & MPTCP_PM_ADDR_FLAG_SIGNAL)) { ^~~~~~~~~~~~~~ net/mptcp/pm_netlink.c:1399:19: warning: The left operand of '==' is a garbage value [clang-analyzer-core.UndefinedBinaryOperatorResult] if (addr.addr.id == 0) ~~~~~~~~~~~~ ^ net/mptcp/pm_netlink.c:1390:8: note: Calling 'mptcp_pm_parse_addr' ret = mptcp_pm_parse_addr(attr, info, false, &addr); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ net/mptcp/pm_netlink.c:1107:6: note: Assuming 'attr' is non-null if (!attr) { ^~~~~ net/mptcp/pm_netlink.c:1107:2: note: Taking false branch if (!attr) { ^ net/mptcp/pm_netlink.c:1115:6: note: Assuming 'err' is not equal to 0 if (err) ^~~ net/mptcp/pm_netlink.c:1115:2: note: Taking true branch if (err) ^ net/mptcp/pm_netlink.c:1116:3: note: Returning without writing to 'entry->addr.id' return err; ^ net/mptcp/pm_netlink.c:1390:8: note: Returning from 'mptcp_pm_parse_addr' ret = mptcp_pm_parse_addr(attr, info, false, &addr); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ net/mptcp/pm_netlink.c:1391:6: note: Assuming 'ret' is >= 0 if (ret < 0) ^~~~~~~ net/mptcp/pm_netlink.c:1391:2: note: Taking false branch if (ret < 0) ^ net/mptcp/pm_netlink.c:1399:19: note: The left operand of '==' is a garbage value if (addr.addr.id == 0) ~~~~~~~~~~~~ ^ net/mptcp/pm_netlink.c:1583:10: warning: 2nd function call argument is an uninitialized value [clang-analyzer-core.CallAndMessage] entry = __lookup_addr_by_id(pernet, addr.addr.id); ^ ~~~~~~~~~~~~ net/mptcp/pm_netlink.c:1566:8: note: Calling 'mptcp_pm_parse_addr' ret = mptcp_pm_parse_addr(attr, info, false, &addr); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ net/mptcp/pm_netlink.c:1107:6: note: Assuming 'attr' is non-null if (!attr) { ^~~~~ net/mptcp/pm_netlink.c:1107:2: note: Taking false branch if (!attr) { ^ net/mptcp/pm_netlink.c:1115:6: note: Assuming 'err' is not equal to 0 if (err) ^~~ net/mptcp/pm_netlink.c:1115:2: note: Taking true branch if (err) ^ net/mptcp/pm_netlink.c:1116:3: note: Returning without writing to 'entry->addr.id' return err; ^ net/mptcp/pm_netlink.c:1566:8: note: Returning from 'mptcp_pm_parse_addr' ret = mptcp_pm_parse_addr(attr, info, false, &addr); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ net/mptcp/pm_netlink.c:1567:6: note: Assuming 'ret' is >= 0 if (ret < 0) ^~~~~~~ net/mptcp/pm_netlink.c:1567:2: note: Taking false branch if (ret < 0) ^ net/mptcp/pm_netlink.c:1571:6: note: Assuming 'msg' is non-null if (!msg) ^~~~ net/mptcp/pm_netlink.c:1571:2: note: Taking false branch if (!msg) vim +1213 net/mptcp/pm_netlink.c 875b76718f68ba Geliang Tang 2021-02-01 1201 01cacb00b35cb6 Paolo Abeni 2020-03-27 1202 static int mptcp_nl_cmd_add_addr(struct sk_buff *skb, struct genl_info *info) 01cacb00b35cb6 Paolo Abeni 2020-03-27 1203 { 01cacb00b35cb6 Paolo Abeni 2020-03-27 1204 struct nlattr *attr = info->attrs[MPTCP_PM_ATTR_ADDR]; 01cacb00b35cb6 Paolo Abeni 2020-03-27 1205 struct pm_nl_pernet *pernet = genl_info_pm_nl(info); 01cacb00b35cb6 Paolo Abeni 2020-03-27 1206 struct mptcp_pm_addr_entry addr, *entry; 01cacb00b35cb6 Paolo Abeni 2020-03-27 1207 int ret; 01cacb00b35cb6 Paolo Abeni 2020-03-27 1208 01cacb00b35cb6 Paolo Abeni 2020-03-27 1209 ret = mptcp_pm_parse_addr(attr, info, true, &addr); 01cacb00b35cb6 Paolo Abeni 2020-03-27 1210 if (ret < 0) 01cacb00b35cb6 Paolo Abeni 2020-03-27 1211 return ret; 01cacb00b35cb6 Paolo Abeni 2020-03-27 1212 019a14644e4d43 Geliang Tang 2022-01-16 @1213 if (addr.addr.port && !(addr.flags & MPTCP_PM_ADDR_FLAG_SIGNAL)) { 019a14644e4d43 Geliang Tang 2022-01-16 1214 GENL_SET_ERR_MSG(info, "flags must have signal when using port"); 019a14644e4d43 Geliang Tang 2022-01-16 1215 return -EINVAL; 019a14644e4d43 Geliang Tang 2022-01-16 1216 } 019a14644e4d43 Geliang Tang 2022-01-16 1217 01cacb00b35cb6 Paolo Abeni 2020-03-27 1218 entry = kmalloc(sizeof(*entry), GFP_KERNEL); 01cacb00b35cb6 Paolo Abeni 2020-03-27 1219 if (!entry) { 01cacb00b35cb6 Paolo Abeni 2020-03-27 1220 GENL_SET_ERR_MSG(info, "can't allocate addr"); 01cacb00b35cb6 Paolo Abeni 2020-03-27 1221 return -ENOMEM; 01cacb00b35cb6 Paolo Abeni 2020-03-27 1222 } 01cacb00b35cb6 Paolo Abeni 2020-03-27 1223 01cacb00b35cb6 Paolo Abeni 2020-03-27 1224 *entry = addr; 1729cf186d8a5d Geliang Tang 2021-02-01 1225 if (entry->addr.port) { 1729cf186d8a5d Geliang Tang 2021-02-01 1226 ret = mptcp_pm_nl_create_listen_socket(skb->sk, entry); 1729cf186d8a5d Geliang Tang 2021-02-01 1227 if (ret) { 1729cf186d8a5d Geliang Tang 2021-02-01 1228 GENL_SET_ERR_MSG(info, "create listen socket error"); 1729cf186d8a5d Geliang Tang 2021-02-01 1229 kfree(entry); 1729cf186d8a5d Geliang Tang 2021-02-01 1230 return ret; 1729cf186d8a5d Geliang Tang 2021-02-01 1231 } 1729cf186d8a5d Geliang Tang 2021-02-01 1232 } 01cacb00b35cb6 Paolo Abeni 2020-03-27 1233 ret = mptcp_pm_nl_append_new_local_addr(pernet, entry); 01cacb00b35cb6 Paolo Abeni 2020-03-27 1234 if (ret < 0) { 01cacb00b35cb6 Paolo Abeni 2020-03-27 1235 GENL_SET_ERR_MSG(info, "too many addresses or duplicate one"); 1729cf186d8a5d Geliang Tang 2021-02-01 1236 if (entry->lsk) 1729cf186d8a5d Geliang Tang 2021-02-01 1237 sock_release(entry->lsk); 01cacb00b35cb6 Paolo Abeni 2020-03-27 1238 kfree(entry); 01cacb00b35cb6 Paolo Abeni 2020-03-27 1239 return ret; 01cacb00b35cb6 Paolo Abeni 2020-03-27 1240 } 01cacb00b35cb6 Paolo Abeni 2020-03-27 1241 875b76718f68ba Geliang Tang 2021-02-01 1242 mptcp_nl_add_subflow_or_signal_addr(sock_net(skb->sk)); 875b76718f68ba Geliang Tang 2021-02-01 1243 01cacb00b35cb6 Paolo Abeni 2020-03-27 1244 return 0; 01cacb00b35cb6 Paolo Abeni 2020-03-27 1245 } 01cacb00b35cb6 Paolo Abeni 2020-03-27 1246 --- 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]
