Message ID | 20200106032324.3147-1-masahiroy@kernel.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | kbuild: allow modules to link *.a archives | expand |
Hi Masahiro, I love your patch! Yet something to improve: [auto build test ERROR on kbuild/for-next] [also build test ERROR on v5.5-rc5 next-20191220] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system. BTW, we also suggest to use '--base' option to specify the base tree in git format-patch, please see https://stackoverflow.com/a/37406982] url: https://github.com/0day-ci/linux/commits/Masahiro-Yamada/kbuild-allow-modules-to-link-a-archives/20200106-112554 base: https://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild.git for-next config: x86_64-randconfig-h002-20200106 (attached as .config) compiler: gcc-7 (Debian 7.5.0-3) 7.5.0 reproduce: # save the attached .config to linux build tree make ARCH=x86_64 If you fix the issue, kindly add following tag Reported-by: kbuild test robot <lkp@intel.com> All errors (new ones prefixed by >>): >> ld: drivers/video/fbdev/core/fbmem.o:(.data..read_mostly+0x20): multiple definition of `registered_fb'; drivers/video/fbdev/core/fbmem.o:(.data..read_mostly+0x20): first defined here ld: drivers/video/fbdev/core/fbmem.o: in function `fb_get_color_depth': >> drivers/video/fbdev/core/fbmem.c:89: multiple definition of `fb_get_color_depth'; drivers/video/fbdev/core/fbmem.o:drivers/video/fbdev/core/fbmem.c:89: first defined here ld: drivers/video/fbdev/core/fbmem.o: in function `__fb_pad_aligned_buffer': >> include/linux/fb.h:650: multiple definition of `fb_pad_aligned_buffer'; drivers/video/fbdev/core/fbmem.o:include/linux/fb.h:650: first defined here ld: drivers/video/fbdev/core/fbmem.o: in function `fb_pad_unaligned_buffer': >> drivers/video/fbdev/core/fbmem.c:121: multiple definition of `fb_pad_unaligned_buffer'; drivers/video/fbdev/core/fbmem.o:drivers/video/fbdev/core/fbmem.c:121: first defined here ld: drivers/video/fbdev/core/fbmem.o: in function `fb_get_buffer_offset': >> drivers/video/fbdev/core/fbmem.c:154: multiple definition of `fb_get_buffer_offset'; drivers/video/fbdev/core/fbmem.o:drivers/video/fbdev/core/fbmem.c:154: first defined here ld: drivers/video/fbdev/core/fbmem.o: in function `fb_prepare_logo': >> drivers/video/fbdev/core/fbmem.c:615: multiple definition of `fb_prepare_logo'; drivers/video/fbdev/core/fbmem.o:drivers/video/fbdev/core/fbmem.c:615: first defined here >> ld: drivers/video/fbdev/core/fbmem.o:(.data..read_mostly+0x18): multiple definition of `fb_center_logo'; drivers/video/fbdev/core/fbmem.o:(.data..read_mostly+0x18): first defined here ld: drivers/video/fbdev/core/fbmem.o: in function `fb_show_logo': >> drivers/video/fbdev/core/fbmem.c:688: multiple definition of `fb_show_logo'; drivers/video/fbdev/core/fbmem.o:drivers/video/fbdev/core/fbmem.c:688: first defined here ld: drivers/video/fbdev/core/fbmem.o: in function `fb_pan_display': >> drivers/video/fbdev/core/fbmem.c:896: multiple definition of `fb_pan_display'; drivers/video/fbdev/core/fbmem.o:drivers/video/fbdev/core/fbmem.c:896: first defined here ld: drivers/video/fbdev/core/fbmem.o: in function `fb_set_var': >> drivers/video/fbdev/core/fbmem.c:954: multiple definition of `fb_set_var'; drivers/video/fbdev/core/fbmem.o:drivers/video/fbdev/core/fbmem.c:954: first defined here ld: drivers/video/fbdev/core/fbmem.o: in function `fb_blank': >> drivers/video/fbdev/core/fbmem.c:1059: multiple definition of `fb_blank'; drivers/video/fbdev/core/fbmem.o:drivers/video/fbdev/core/fbmem.c:1059: first defined here ld: drivers/video/fbdev/core/fbmem.o: in function `unlink_framebuffer': >> drivers/video/fbdev/core/fbmem.c:1677: multiple definition of `unlink_framebuffer'; drivers/video/fbdev/core/fbmem.o:drivers/video/fbdev/core/fbmem.c:1677: first defined here >> ld: drivers/video/fbdev/core/fbmem.o:(.bss+0x100): multiple definition of `fb_class'; drivers/video/fbdev/core/fbmem.o:(.bss+0x100): first defined here >> ld: drivers/video/fbdev/core/fbmem.o:(.data..read_mostly+0x1c): multiple definition of `num_registered_fb'; drivers/video/fbdev/core/fbmem.o:(.data..read_mostly+0x1c): first defined here ld: drivers/video/fbdev/core/fbmem.o: in function `remove_conflicting_framebuffers': >> drivers/video/fbdev/core/fbmem.c:1737: multiple definition of `remove_conflicting_framebuffers'; drivers/video/fbdev/core/fbmem.o:drivers/video/fbdev/core/fbmem.c:1737: first defined here ld: drivers/video/fbdev/core/fbmem.o: in function `remove_conflicting_pci_framebuffers': >> drivers/video/fbdev/core/fbmem.c:1770: multiple definition of `remove_conflicting_pci_framebuffers'; drivers/video/fbdev/core/fbmem.o:drivers/video/fbdev/core/fbmem.c:1770: first defined here ld: drivers/video/fbdev/core/fbmem.o: in function `register_framebuffer': >> drivers/video/fbdev/core/fbmem.c:1817: multiple definition of `register_framebuffer'; drivers/video/fbdev/core/fbmem.o:drivers/video/fbdev/core/fbmem.c:1817: first defined here ld: drivers/video/fbdev/core/fbmem.o: in function `unregister_framebuffer': >> drivers/video/fbdev/core/fbmem.c:1846: multiple definition of `unregister_framebuffer'; drivers/video/fbdev/core/fbmem.o:drivers/video/fbdev/core/fbmem.c:1846: first defined here ld: drivers/video/fbdev/core/fbmem.o: in function `fb_set_suspend': >> drivers/video/fbdev/core/fbmem.c:1863: multiple definition of `fb_set_suspend'; drivers/video/fbdev/core/fbmem.o:drivers/video/fbdev/core/fbmem.c:1863: first defined here ld: drivers/video/fbdev/core/fbmem.o: in function `fbmem_init': >> drivers/video/fbdev/core/fbmem.c:1887: multiple definition of `init_module'; drivers/video/fbdev/core/fbmem.o:drivers/video/fbdev/core/fbmem.c:1887: first defined here ld: drivers/video/fbdev/core/fbmem.o: in function `fbmem_exit': --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org Intel Corporation
Hi Masahiro, I love your patch! Yet something to improve: [auto build test ERROR on kbuild/for-next] [also build test ERROR on v5.5-rc5 next-20191220] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system. BTW, we also suggest to use '--base' option to specify the base tree in git format-patch, please see https://stackoverflow.com/a/37406982] url: https://github.com/0day-ci/linux/commits/Masahiro-Yamada/kbuild-allow-modules-to-link-a-archives/20200106-112554 base: https://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild.git for-next config: x86_64-rhel (attached as .config) compiler: gcc-7 (Debian 7.5.0-3) 7.5.0 reproduce: # save the attached .config to linux build tree make ARCH=x86_64 If you fix the issue, kindly add following tag Reported-by: kbuild test robot <lkp@intel.com> All errors (new ones prefixed by >>): ld: net/tipc/socket.o: in function `tipc_nl_sk_walk': >> net/tipc/socket.c:3449: multiple definition of `tipc_nl_sk_walk'; net/tipc/socket.o:net/tipc/socket.c:3449: first defined here ld: net/tipc/socket.o: in function `tipc_dump_start': >> net/tipc/socket.c:3485: multiple definition of `tipc_dump_start'; net/tipc/socket.o:net/tipc/socket.c:3485: first defined here ld: net/tipc/socket.o: in function `tipc_dump_done': >> net/tipc/socket.c:3509: multiple definition of `tipc_dump_done'; net/tipc/socket.o:net/tipc/socket.c:3509: first defined here ld: net/tipc/socket.o: in function `tipc_sk_fill_sock_diag': >> net/tipc/socket.c:3521: multiple definition of `tipc_sk_fill_sock_diag'; net/tipc/socket.o:net/tipc/socket.c:3521: first defined here ld: net/tipc/socket.o: in function `tipc_sk_reinit': >> net/tipc/socket.c:2858: multiple definition of `tipc_sk_reinit'; net/tipc/socket.o:net/tipc/socket.c:2858: first defined here ld: net/tipc/socket.o: in function `tipc_sk_rht_init': >> net/tipc/socket.c:2946: multiple definition of `tipc_sk_rht_init'; net/tipc/socket.o:net/tipc/socket.c:2946: first defined here ld: net/tipc/socket.o: in function `tipc_sk_rht_destroy': >> net/tipc/socket.c:2953: multiple definition of `tipc_sk_rht_destroy'; net/tipc/socket.o:net/tipc/socket.c:2953: first defined here ld: net/tipc/socket.o: in function `tipc_socket_init': >> net/tipc/socket.c:3328: multiple definition of `tipc_socket_init'; net/tipc/socket.o:net/tipc/socket.c:3328: first defined here ld: net/tipc/socket.o: in function `tipc_socket_stop': >> net/tipc/socket.c:3351: multiple definition of `tipc_socket_stop'; net/tipc/socket.o:net/tipc/socket.c:3351: first defined here ld: net/tipc/socket.o: in function `__tipc_dump_start': >> net/tipc/socket.c:3491: multiple definition of `__tipc_dump_start'; net/tipc/socket.o:net/tipc/socket.c:3491: first defined here ld: net/tipc/socket.o: in function `tipc_nl_sk_dump': >> net/tipc/socket.c:3588: multiple definition of `tipc_nl_sk_dump'; net/tipc/socket.o:net/tipc/socket.c:3588: first defined here ld: net/tipc/socket.o: in function `tipc_nl_publ_dump': >> net/tipc/socket.c:3673: multiple definition of `tipc_nl_publ_dump'; net/tipc/socket.o:net/tipc/socket.c:3673: first defined here ld: net/tipc/socket.o: in function `tipc_sk_filtering': >> net/tipc/socket.c:3732: multiple definition of `tipc_sk_filtering'; net/tipc/socket.o:net/tipc/socket.c:3732: first defined here ld: net/tipc/socket.o: in function `tipc_sk_rcv': >> net/tipc/socket.c:2374: multiple definition of `tipc_sk_rcv'; net/tipc/socket.o:net/tipc/socket.c:2374: first defined here ld: net/tipc/socket.o: in function `tipc_sk_mcast_rcv': >> net/tipc/socket.c:1163: multiple definition of `tipc_sk_mcast_rcv'; net/tipc/socket.o:net/tipc/socket.c:1163: first defined here ld: net/tipc/socket.o: in function `tipc_sock_get_portid': >> net/tipc/socket.c:3782: multiple definition of `tipc_sock_get_portid'; net/tipc/socket.o:net/tipc/socket.c:3782: first defined here ld: net/tipc/socket.o: in function `tipc_sk_overlimit1': >> net/tipc/socket.c:3796: multiple definition of `tipc_sk_overlimit1'; net/tipc/socket.o:net/tipc/socket.c:3796: first defined here ld: net/tipc/socket.o: in function `tipc_sk_overlimit2': >> net/tipc/socket.c:3814: multiple definition of `tipc_sk_overlimit2'; net/tipc/socket.o:net/tipc/socket.c:3814: first defined here ld: net/tipc/socket.o: in function `tipc_sk_dump': >> net/tipc/socket.c:3833: multiple definition of `tipc_sk_dump'; net/tipc/socket.o:net/tipc/socket.c:3833: first defined here vim +3449 net/tipc/socket.c b97bf3fd8f6a16 Per Liden 2006-01-02 3321 b97bf3fd8f6a16 Per Liden 2006-01-02 3322 /** 4323add67792ce Per Liden 2006-01-18 3323 * tipc_socket_init - initialize TIPC socket interface b97bf3fd8f6a16 Per Liden 2006-01-02 3324 * b97bf3fd8f6a16 Per Liden 2006-01-02 3325 * Returns 0 on success, errno otherwise b97bf3fd8f6a16 Per Liden 2006-01-02 3326 */ 4323add67792ce Per Liden 2006-01-18 3327 int tipc_socket_init(void) b97bf3fd8f6a16 Per Liden 2006-01-02 @3328 { b97bf3fd8f6a16 Per Liden 2006-01-02 3329 int res; b97bf3fd8f6a16 Per Liden 2006-01-02 3330 b97bf3fd8f6a16 Per Liden 2006-01-02 3331 res = proto_register(&tipc_proto, 1); b97bf3fd8f6a16 Per Liden 2006-01-02 3332 if (res) { 2cf8aa19fe8bec Erik Hugne 2012-06-29 3333 pr_err("Failed to register TIPC protocol type\n"); b97bf3fd8f6a16 Per Liden 2006-01-02 3334 goto out; b97bf3fd8f6a16 Per Liden 2006-01-02 3335 } b97bf3fd8f6a16 Per Liden 2006-01-02 3336 b97bf3fd8f6a16 Per Liden 2006-01-02 3337 res = sock_register(&tipc_family_ops); b97bf3fd8f6a16 Per Liden 2006-01-02 3338 if (res) { 2cf8aa19fe8bec Erik Hugne 2012-06-29 3339 pr_err("Failed to register TIPC socket type\n"); b97bf3fd8f6a16 Per Liden 2006-01-02 3340 proto_unregister(&tipc_proto); b97bf3fd8f6a16 Per Liden 2006-01-02 3341 goto out; b97bf3fd8f6a16 Per Liden 2006-01-02 3342 } b97bf3fd8f6a16 Per Liden 2006-01-02 3343 out: b97bf3fd8f6a16 Per Liden 2006-01-02 3344 return res; b97bf3fd8f6a16 Per Liden 2006-01-02 3345 } b97bf3fd8f6a16 Per Liden 2006-01-02 3346 b97bf3fd8f6a16 Per Liden 2006-01-02 3347 /** 4323add67792ce Per Liden 2006-01-18 3348 * tipc_socket_stop - stop TIPC socket interface b97bf3fd8f6a16 Per Liden 2006-01-02 3349 */ 4323add67792ce Per Liden 2006-01-18 3350 void tipc_socket_stop(void) b97bf3fd8f6a16 Per Liden 2006-01-02 @3351 { b97bf3fd8f6a16 Per Liden 2006-01-02 3352 sock_unregister(tipc_family_ops.family); b97bf3fd8f6a16 Per Liden 2006-01-02 3353 proto_unregister(&tipc_proto); b97bf3fd8f6a16 Per Liden 2006-01-02 3354 } 34b78a127c4fd5 Richard Alpe 2014-11-20 3355 34b78a127c4fd5 Richard Alpe 2014-11-20 3356 /* Caller should hold socket lock for the passed tipc socket. */ d8182804cfd650 Richard Alpe 2014-11-24 3357 static int __tipc_nl_add_sk_con(struct sk_buff *skb, struct tipc_sock *tsk) 34b78a127c4fd5 Richard Alpe 2014-11-20 3358 { 34b78a127c4fd5 Richard Alpe 2014-11-20 3359 u32 peer_node; 34b78a127c4fd5 Richard Alpe 2014-11-20 3360 u32 peer_port; 34b78a127c4fd5 Richard Alpe 2014-11-20 3361 struct nlattr *nest; 34b78a127c4fd5 Richard Alpe 2014-11-20 3362 34b78a127c4fd5 Richard Alpe 2014-11-20 3363 peer_node = tsk_peer_node(tsk); 34b78a127c4fd5 Richard Alpe 2014-11-20 3364 peer_port = tsk_peer_port(tsk); 34b78a127c4fd5 Richard Alpe 2014-11-20 3365 ae0be8de9a53cd Michal Kubecek 2019-04-26 3366 nest = nla_nest_start_noflag(skb, TIPC_NLA_SOCK_CON); 517ccc2aa50dbd Kangjie Lu 2019-03-16 3367 if (!nest) 517ccc2aa50dbd Kangjie Lu 2019-03-16 3368 return -EMSGSIZE; 34b78a127c4fd5 Richard Alpe 2014-11-20 3369 34b78a127c4fd5 Richard Alpe 2014-11-20 3370 if (nla_put_u32(skb, TIPC_NLA_CON_NODE, peer_node)) 34b78a127c4fd5 Richard Alpe 2014-11-20 3371 goto msg_full; 34b78a127c4fd5 Richard Alpe 2014-11-20 3372 if (nla_put_u32(skb, TIPC_NLA_CON_SOCK, peer_port)) 34b78a127c4fd5 Richard Alpe 2014-11-20 3373 goto msg_full; 34b78a127c4fd5 Richard Alpe 2014-11-20 3374 34b78a127c4fd5 Richard Alpe 2014-11-20 3375 if (tsk->conn_type != 0) { 34b78a127c4fd5 Richard Alpe 2014-11-20 3376 if (nla_put_flag(skb, TIPC_NLA_CON_FLAG)) 34b78a127c4fd5 Richard Alpe 2014-11-20 3377 goto msg_full; 34b78a127c4fd5 Richard Alpe 2014-11-20 3378 if (nla_put_u32(skb, TIPC_NLA_CON_TYPE, tsk->conn_type)) 34b78a127c4fd5 Richard Alpe 2014-11-20 3379 goto msg_full; 34b78a127c4fd5 Richard Alpe 2014-11-20 3380 if (nla_put_u32(skb, TIPC_NLA_CON_INST, tsk->conn_instance)) 34b78a127c4fd5 Richard Alpe 2014-11-20 3381 goto msg_full; 34b78a127c4fd5 Richard Alpe 2014-11-20 3382 } 34b78a127c4fd5 Richard Alpe 2014-11-20 3383 nla_nest_end(skb, nest); 34b78a127c4fd5 Richard Alpe 2014-11-20 3384 34b78a127c4fd5 Richard Alpe 2014-11-20 3385 return 0; 34b78a127c4fd5 Richard Alpe 2014-11-20 3386 34b78a127c4fd5 Richard Alpe 2014-11-20 3387 msg_full: 34b78a127c4fd5 Richard Alpe 2014-11-20 3388 nla_nest_cancel(skb, nest); 34b78a127c4fd5 Richard Alpe 2014-11-20 3389 34b78a127c4fd5 Richard Alpe 2014-11-20 3390 return -EMSGSIZE; 34b78a127c4fd5 Richard Alpe 2014-11-20 3391 } 34b78a127c4fd5 Richard Alpe 2014-11-20 3392 dfde331e757fd7 GhantaKrishnamurthy MohanKrishna 2018-03-21 3393 static int __tipc_nl_add_sk_info(struct sk_buff *skb, struct tipc_sock dfde331e757fd7 GhantaKrishnamurthy MohanKrishna 2018-03-21 3394 *tsk) dfde331e757fd7 GhantaKrishnamurthy MohanKrishna 2018-03-21 3395 { dfde331e757fd7 GhantaKrishnamurthy MohanKrishna 2018-03-21 3396 struct net *net = sock_net(skb->sk); dfde331e757fd7 GhantaKrishnamurthy MohanKrishna 2018-03-21 3397 struct sock *sk = &tsk->sk; dfde331e757fd7 GhantaKrishnamurthy MohanKrishna 2018-03-21 3398 dfde331e757fd7 GhantaKrishnamurthy MohanKrishna 2018-03-21 3399 if (nla_put_u32(skb, TIPC_NLA_SOCK_REF, tsk->portid) || 23fd3eace088ab Jon Maloy 2018-03-22 3400 nla_put_u32(skb, TIPC_NLA_SOCK_ADDR, tipc_own_addr(net))) dfde331e757fd7 GhantaKrishnamurthy MohanKrishna 2018-03-21 3401 return -EMSGSIZE; dfde331e757fd7 GhantaKrishnamurthy MohanKrishna 2018-03-21 3402 dfde331e757fd7 GhantaKrishnamurthy MohanKrishna 2018-03-21 3403 if (tipc_sk_connected(sk)) { dfde331e757fd7 GhantaKrishnamurthy MohanKrishna 2018-03-21 3404 if (__tipc_nl_add_sk_con(skb, tsk)) dfde331e757fd7 GhantaKrishnamurthy MohanKrishna 2018-03-21 3405 return -EMSGSIZE; dfde331e757fd7 GhantaKrishnamurthy MohanKrishna 2018-03-21 3406 } else if (!list_empty(&tsk->publications)) { dfde331e757fd7 GhantaKrishnamurthy MohanKrishna 2018-03-21 3407 if (nla_put_flag(skb, TIPC_NLA_SOCK_HAS_PUBL)) dfde331e757fd7 GhantaKrishnamurthy MohanKrishna 2018-03-21 3408 return -EMSGSIZE; dfde331e757fd7 GhantaKrishnamurthy MohanKrishna 2018-03-21 3409 } dfde331e757fd7 GhantaKrishnamurthy MohanKrishna 2018-03-21 3410 return 0; dfde331e757fd7 GhantaKrishnamurthy MohanKrishna 2018-03-21 3411 } dfde331e757fd7 GhantaKrishnamurthy MohanKrishna 2018-03-21 3412 34b78a127c4fd5 Richard Alpe 2014-11-20 3413 /* Caller should hold socket lock for the passed tipc socket. */ d8182804cfd650 Richard Alpe 2014-11-24 3414 static int __tipc_nl_add_sk(struct sk_buff *skb, struct netlink_callback *cb, 34b78a127c4fd5 Richard Alpe 2014-11-20 3415 struct tipc_sock *tsk) 34b78a127c4fd5 Richard Alpe 2014-11-20 3416 { 34b78a127c4fd5 Richard Alpe 2014-11-20 3417 struct nlattr *attrs; dfde331e757fd7 GhantaKrishnamurthy MohanKrishna 2018-03-21 3418 void *hdr; 34b78a127c4fd5 Richard Alpe 2014-11-20 3419 34b78a127c4fd5 Richard Alpe 2014-11-20 3420 hdr = genlmsg_put(skb, NETLINK_CB(cb->skb).portid, cb->nlh->nlmsg_seq, bfb3e5dd8dfd84 Richard Alpe 2015-02-09 3421 &tipc_genl_family, NLM_F_MULTI, TIPC_NL_SOCK_GET); 34b78a127c4fd5 Richard Alpe 2014-11-20 3422 if (!hdr) 34b78a127c4fd5 Richard Alpe 2014-11-20 3423 goto msg_cancel; 34b78a127c4fd5 Richard Alpe 2014-11-20 3424 ae0be8de9a53cd Michal Kubecek 2019-04-26 3425 attrs = nla_nest_start_noflag(skb, TIPC_NLA_SOCK); 34b78a127c4fd5 Richard Alpe 2014-11-20 3426 if (!attrs) 34b78a127c4fd5 Richard Alpe 2014-11-20 3427 goto genlmsg_cancel; 34b78a127c4fd5 Richard Alpe 2014-11-20 3428 dfde331e757fd7 GhantaKrishnamurthy MohanKrishna 2018-03-21 3429 if (__tipc_nl_add_sk_info(skb, tsk)) 34b78a127c4fd5 Richard Alpe 2014-11-20 3430 goto attr_msg_cancel; dfde331e757fd7 GhantaKrishnamurthy MohanKrishna 2018-03-21 3431 34b78a127c4fd5 Richard Alpe 2014-11-20 3432 nla_nest_end(skb, attrs); 34b78a127c4fd5 Richard Alpe 2014-11-20 3433 genlmsg_end(skb, hdr); 34b78a127c4fd5 Richard Alpe 2014-11-20 3434 34b78a127c4fd5 Richard Alpe 2014-11-20 3435 return 0; 34b78a127c4fd5 Richard Alpe 2014-11-20 3436 34b78a127c4fd5 Richard Alpe 2014-11-20 3437 attr_msg_cancel: 34b78a127c4fd5 Richard Alpe 2014-11-20 3438 nla_nest_cancel(skb, attrs); 34b78a127c4fd5 Richard Alpe 2014-11-20 3439 genlmsg_cancel: 34b78a127c4fd5 Richard Alpe 2014-11-20 3440 genlmsg_cancel(skb, hdr); 34b78a127c4fd5 Richard Alpe 2014-11-20 3441 msg_cancel: 34b78a127c4fd5 Richard Alpe 2014-11-20 3442 return -EMSGSIZE; 34b78a127c4fd5 Richard Alpe 2014-11-20 3443 } 34b78a127c4fd5 Richard Alpe 2014-11-20 3444 c30b70deb5f486 GhantaKrishnamurthy MohanKrishna 2018-03-21 3445 int tipc_nl_sk_walk(struct sk_buff *skb, struct netlink_callback *cb, dfde331e757fd7 GhantaKrishnamurthy MohanKrishna 2018-03-21 3446 int (*skb_handler)(struct sk_buff *skb, dfde331e757fd7 GhantaKrishnamurthy MohanKrishna 2018-03-21 3447 struct netlink_callback *cb, dfde331e757fd7 GhantaKrishnamurthy MohanKrishna 2018-03-21 3448 struct tipc_sock *tsk)) 34b78a127c4fd5 Richard Alpe 2014-11-20 @3449 { 8f5c5fcf353302 Cong Wang 2018-09-04 3450 struct rhashtable_iter *iter = (void *)cb->args[4]; dfde331e757fd7 GhantaKrishnamurthy MohanKrishna 2018-03-21 3451 struct tipc_sock *tsk; dfde331e757fd7 GhantaKrishnamurthy MohanKrishna 2018-03-21 3452 int err; 34b78a127c4fd5 Richard Alpe 2014-11-20 3453 9a07efa9aea2f4 Cong Wang 2018-08-24 3454 rhashtable_walk_start(iter); 9a07efa9aea2f4 Cong Wang 2018-08-24 3455 while ((tsk = rhashtable_walk_next(iter)) != NULL) { 9a07efa9aea2f4 Cong Wang 2018-08-24 3456 if (IS_ERR(tsk)) { 9a07efa9aea2f4 Cong Wang 2018-08-24 3457 err = PTR_ERR(tsk); 9a07efa9aea2f4 Cong Wang 2018-08-24 3458 if (err == -EAGAIN) { 9a07efa9aea2f4 Cong Wang 2018-08-24 3459 err = 0; d6e164e3215794 Richard Alpe 2015-01-16 3460 continue; d6e164e3215794 Richard Alpe 2015-01-16 3461 } 9a07efa9aea2f4 Cong Wang 2018-08-24 3462 break; 9a07efa9aea2f4 Cong Wang 2018-08-24 3463 } 34b78a127c4fd5 Richard Alpe 2014-11-20 3464 9a07efa9aea2f4 Cong Wang 2018-08-24 3465 sock_hold(&tsk->sk); 9a07efa9aea2f4 Cong Wang 2018-08-24 3466 rhashtable_walk_stop(iter); 9a07efa9aea2f4 Cong Wang 2018-08-24 3467 lock_sock(&tsk->sk); dfde331e757fd7 GhantaKrishnamurthy MohanKrishna 2018-03-21 3468 err = skb_handler(skb, cb, tsk); d6e164e3215794 Richard Alpe 2015-01-16 3469 if (err) { 9a07efa9aea2f4 Cong Wang 2018-08-24 3470 release_sock(&tsk->sk); 9a07efa9aea2f4 Cong Wang 2018-08-24 3471 sock_put(&tsk->sk); d6e164e3215794 Richard Alpe 2015-01-16 3472 goto out; 34b78a127c4fd5 Richard Alpe 2014-11-20 3473 } 9a07efa9aea2f4 Cong Wang 2018-08-24 3474 release_sock(&tsk->sk); 9a07efa9aea2f4 Cong Wang 2018-08-24 3475 rhashtable_walk_start(iter); 9a07efa9aea2f4 Cong Wang 2018-08-24 3476 sock_put(&tsk->sk); d6e164e3215794 Richard Alpe 2015-01-16 3477 } 9a07efa9aea2f4 Cong Wang 2018-08-24 3478 rhashtable_walk_stop(iter); d6e164e3215794 Richard Alpe 2015-01-16 3479 out: 34b78a127c4fd5 Richard Alpe 2014-11-20 3480 return skb->len; 34b78a127c4fd5 Richard Alpe 2014-11-20 3481 } c30b70deb5f486 GhantaKrishnamurthy MohanKrishna 2018-03-21 3482 EXPORT_SYMBOL(tipc_nl_sk_walk); c30b70deb5f486 GhantaKrishnamurthy MohanKrishna 2018-03-21 3483 9a07efa9aea2f4 Cong Wang 2018-08-24 3484 int tipc_dump_start(struct netlink_callback *cb) 9a07efa9aea2f4 Cong Wang 2018-08-24 @3485 { 8f5c5fcf353302 Cong Wang 2018-09-04 3486 return __tipc_dump_start(cb, sock_net(cb->skb->sk)); 8f5c5fcf353302 Cong Wang 2018-09-04 3487 } 8f5c5fcf353302 Cong Wang 2018-09-04 3488 EXPORT_SYMBOL(tipc_dump_start); 8f5c5fcf353302 Cong Wang 2018-09-04 3489 8f5c5fcf353302 Cong Wang 2018-09-04 3490 int __tipc_dump_start(struct netlink_callback *cb, struct net *net) 8f5c5fcf353302 Cong Wang 2018-09-04 @3491 { 8f5c5fcf353302 Cong Wang 2018-09-04 3492 /* tipc_nl_name_table_dump() uses cb->args[0...3]. */ 8f5c5fcf353302 Cong Wang 2018-09-04 3493 struct rhashtable_iter *iter = (void *)cb->args[4]; 9a07efa9aea2f4 Cong Wang 2018-08-24 3494 struct tipc_net *tn = tipc_net(net); 9a07efa9aea2f4 Cong Wang 2018-08-24 3495 9a07efa9aea2f4 Cong Wang 2018-08-24 3496 if (!iter) { 9a07efa9aea2f4 Cong Wang 2018-08-24 3497 iter = kmalloc(sizeof(*iter), GFP_KERNEL); 9a07efa9aea2f4 Cong Wang 2018-08-24 3498 if (!iter) 9a07efa9aea2f4 Cong Wang 2018-08-24 3499 return -ENOMEM; 9a07efa9aea2f4 Cong Wang 2018-08-24 3500 8f5c5fcf353302 Cong Wang 2018-09-04 3501 cb->args[4] = (long)iter; 9a07efa9aea2f4 Cong Wang 2018-08-24 3502 } 9a07efa9aea2f4 Cong Wang 2018-08-24 3503 9a07efa9aea2f4 Cong Wang 2018-08-24 3504 rhashtable_walk_enter(&tn->sk_rht, iter); 9a07efa9aea2f4 Cong Wang 2018-08-24 3505 return 0; 9a07efa9aea2f4 Cong Wang 2018-08-24 3506 } 9a07efa9aea2f4 Cong Wang 2018-08-24 3507 9a07efa9aea2f4 Cong Wang 2018-08-24 3508 int tipc_dump_done(struct netlink_callback *cb) 9a07efa9aea2f4 Cong Wang 2018-08-24 @3509 { 8f5c5fcf353302 Cong Wang 2018-09-04 3510 struct rhashtable_iter *hti = (void *)cb->args[4]; 9a07efa9aea2f4 Cong Wang 2018-08-24 3511 9a07efa9aea2f4 Cong Wang 2018-08-24 3512 rhashtable_walk_exit(hti); 9a07efa9aea2f4 Cong Wang 2018-08-24 3513 kfree(hti); 9a07efa9aea2f4 Cong Wang 2018-08-24 3514 return 0; 9a07efa9aea2f4 Cong Wang 2018-08-24 3515 } 9a07efa9aea2f4 Cong Wang 2018-08-24 3516 EXPORT_SYMBOL(tipc_dump_done); 9a07efa9aea2f4 Cong Wang 2018-08-24 3517 e41f0548473eb7 Cong Wang 2018-04-06 3518 int tipc_sk_fill_sock_diag(struct sk_buff *skb, struct netlink_callback *cb, e41f0548473eb7 Cong Wang 2018-04-06 3519 struct tipc_sock *tsk, u32 sk_filter_state, c30b70deb5f486 GhantaKrishnamurthy MohanKrishna 2018-03-21 3520 u64 (*tipc_diag_gen_cookie)(struct sock *sk)) c30b70deb5f486 GhantaKrishnamurthy MohanKrishna 2018-03-21 @3521 { c30b70deb5f486 GhantaKrishnamurthy MohanKrishna 2018-03-21 3522 struct sock *sk = &tsk->sk; c30b70deb5f486 GhantaKrishnamurthy MohanKrishna 2018-03-21 3523 struct nlattr *attrs; c30b70deb5f486 GhantaKrishnamurthy MohanKrishna 2018-03-21 3524 struct nlattr *stat; c30b70deb5f486 GhantaKrishnamurthy MohanKrishna 2018-03-21 3525 c30b70deb5f486 GhantaKrishnamurthy MohanKrishna 2018-03-21 3526 /*filter response w.r.t sk_state*/ c30b70deb5f486 GhantaKrishnamurthy MohanKrishna 2018-03-21 3527 if (!(sk_filter_state & (1 << sk->sk_state))) c30b70deb5f486 GhantaKrishnamurthy MohanKrishna 2018-03-21 3528 return 0; c30b70deb5f486 GhantaKrishnamurthy MohanKrishna 2018-03-21 3529 ae0be8de9a53cd Michal Kubecek 2019-04-26 3530 attrs = nla_nest_start_noflag(skb, TIPC_NLA_SOCK); c30b70deb5f486 GhantaKrishnamurthy MohanKrishna 2018-03-21 3531 if (!attrs) c30b70deb5f486 GhantaKrishnamurthy MohanKrishna 2018-03-21 3532 goto msg_cancel; c30b70deb5f486 GhantaKrishnamurthy MohanKrishna 2018-03-21 3533 c30b70deb5f486 GhantaKrishnamurthy MohanKrishna 2018-03-21 3534 if (__tipc_nl_add_sk_info(skb, tsk)) c30b70deb5f486 GhantaKrishnamurthy MohanKrishna 2018-03-21 3535 goto attr_msg_cancel; c30b70deb5f486 GhantaKrishnamurthy MohanKrishna 2018-03-21 3536 c30b70deb5f486 GhantaKrishnamurthy MohanKrishna 2018-03-21 3537 if (nla_put_u32(skb, TIPC_NLA_SOCK_TYPE, (u32)sk->sk_type) || c30b70deb5f486 GhantaKrishnamurthy MohanKrishna 2018-03-21 3538 nla_put_u32(skb, TIPC_NLA_SOCK_TIPC_STATE, (u32)sk->sk_state) || c30b70deb5f486 GhantaKrishnamurthy MohanKrishna 2018-03-21 3539 nla_put_u32(skb, TIPC_NLA_SOCK_INO, sock_i_ino(sk)) || c30b70deb5f486 GhantaKrishnamurthy MohanKrishna 2018-03-21 3540 nla_put_u32(skb, TIPC_NLA_SOCK_UID, e41f0548473eb7 Cong Wang 2018-04-06 3541 from_kuid_munged(sk_user_ns(NETLINK_CB(cb->skb).sk), 4b2e6877b8793b GhantaKrishnamurthy MohanKrishna 2018-04-04 3542 sock_i_uid(sk))) || c30b70deb5f486 GhantaKrishnamurthy MohanKrishna 2018-03-21 3543 nla_put_u64_64bit(skb, TIPC_NLA_SOCK_COOKIE, c30b70deb5f486 GhantaKrishnamurthy MohanKrishna 2018-03-21 3544 tipc_diag_gen_cookie(sk), c30b70deb5f486 GhantaKrishnamurthy MohanKrishna 2018-03-21 3545 TIPC_NLA_SOCK_PAD)) c30b70deb5f486 GhantaKrishnamurthy MohanKrishna 2018-03-21 3546 goto attr_msg_cancel; c30b70deb5f486 GhantaKrishnamurthy MohanKrishna 2018-03-21 3547 ae0be8de9a53cd Michal Kubecek 2019-04-26 3548 stat = nla_nest_start_noflag(skb, TIPC_NLA_SOCK_STAT); c30b70deb5f486 GhantaKrishnamurthy MohanKrishna 2018-03-21 3549 if (!stat) c30b70deb5f486 GhantaKrishnamurthy MohanKrishna 2018-03-21 3550 goto attr_msg_cancel; c30b70deb5f486 GhantaKrishnamurthy MohanKrishna 2018-03-21 3551 c30b70deb5f486 GhantaKrishnamurthy MohanKrishna 2018-03-21 3552 if (nla_put_u32(skb, TIPC_NLA_SOCK_STAT_RCVQ, c30b70deb5f486 GhantaKrishnamurthy MohanKrishna 2018-03-21 3553 skb_queue_len(&sk->sk_receive_queue)) || c30b70deb5f486 GhantaKrishnamurthy MohanKrishna 2018-03-21 3554 nla_put_u32(skb, TIPC_NLA_SOCK_STAT_SENDQ, 872619d8cf810c GhantaKrishnamurthy MohanKrishna 2018-03-21 3555 skb_queue_len(&sk->sk_write_queue)) || 872619d8cf810c GhantaKrishnamurthy MohanKrishna 2018-03-21 3556 nla_put_u32(skb, TIPC_NLA_SOCK_STAT_DROP, 872619d8cf810c GhantaKrishnamurthy MohanKrishna 2018-03-21 3557 atomic_read(&sk->sk_drops))) c30b70deb5f486 GhantaKrishnamurthy MohanKrishna 2018-03-21 3558 goto stat_msg_cancel; c30b70deb5f486 GhantaKrishnamurthy MohanKrishna 2018-03-21 3559 c30b70deb5f486 GhantaKrishnamurthy MohanKrishna 2018-03-21 3560 if (tsk->cong_link_cnt && c30b70deb5f486 GhantaKrishnamurthy MohanKrishna 2018-03-21 3561 nla_put_flag(skb, TIPC_NLA_SOCK_STAT_LINK_CONG)) c30b70deb5f486 GhantaKrishnamurthy MohanKrishna 2018-03-21 3562 goto stat_msg_cancel; c30b70deb5f486 GhantaKrishnamurthy MohanKrishna 2018-03-21 3563 c30b70deb5f486 GhantaKrishnamurthy MohanKrishna 2018-03-21 3564 if (tsk_conn_cong(tsk) && c30b70deb5f486 GhantaKrishnamurthy MohanKrishna 2018-03-21 3565 nla_put_flag(skb, TIPC_NLA_SOCK_STAT_CONN_CONG)) c30b70deb5f486 GhantaKrishnamurthy MohanKrishna 2018-03-21 3566 goto stat_msg_cancel; c30b70deb5f486 GhantaKrishnamurthy MohanKrishna 2018-03-21 3567 c30b70deb5f486 GhantaKrishnamurthy MohanKrishna 2018-03-21 3568 nla_nest_end(skb, stat); a1be5a20f137bd GhantaKrishnamurthy MohanKrishna 2018-06-29 3569 a1be5a20f137bd GhantaKrishnamurthy MohanKrishna 2018-06-29 3570 if (tsk->group) a1be5a20f137bd GhantaKrishnamurthy MohanKrishna 2018-06-29 3571 if (tipc_group_fill_sock_diag(tsk->group, skb)) a1be5a20f137bd GhantaKrishnamurthy MohanKrishna 2018-06-29 3572 goto stat_msg_cancel; a1be5a20f137bd GhantaKrishnamurthy MohanKrishna 2018-06-29 3573 c30b70deb5f486 GhantaKrishnamurthy MohanKrishna 2018-03-21 3574 nla_nest_end(skb, attrs); c30b70deb5f486 GhantaKrishnamurthy MohanKrishna 2018-03-21 3575 c30b70deb5f486 GhantaKrishnamurthy MohanKrishna 2018-03-21 3576 return 0; c30b70deb5f486 GhantaKrishnamurthy MohanKrishna 2018-03-21 3577 c30b70deb5f486 GhantaKrishnamurthy MohanKrishna 2018-03-21 3578 stat_msg_cancel: c30b70deb5f486 GhantaKrishnamurthy MohanKrishna 2018-03-21 3579 nla_nest_cancel(skb, stat); c30b70deb5f486 GhantaKrishnamurthy MohanKrishna 2018-03-21 3580 attr_msg_cancel: c30b70deb5f486 GhantaKrishnamurthy MohanKrishna 2018-03-21 3581 nla_nest_cancel(skb, attrs); c30b70deb5f486 GhantaKrishnamurthy MohanKrishna 2018-03-21 3582 msg_cancel: c30b70deb5f486 GhantaKrishnamurthy MohanKrishna 2018-03-21 3583 return -EMSGSIZE; c30b70deb5f486 GhantaKrishnamurthy MohanKrishna 2018-03-21 3584 } c30b70deb5f486 GhantaKrishnamurthy MohanKrishna 2018-03-21 3585 EXPORT_SYMBOL(tipc_sk_fill_sock_diag); 1a1a143daf84db Richard Alpe 2014-11-20 3586 dfde331e757fd7 GhantaKrishnamurthy MohanKrishna 2018-03-21 3587 int tipc_nl_sk_dump(struct sk_buff *skb, struct netlink_callback *cb) dfde331e757fd7 GhantaKrishnamurthy MohanKrishna 2018-03-21 @3588 { c30b70deb5f486 GhantaKrishnamurthy MohanKrishna 2018-03-21 3589 return tipc_nl_sk_walk(skb, cb, __tipc_nl_add_sk); dfde331e757fd7 GhantaKrishnamurthy MohanKrishna 2018-03-21 3590 } dfde331e757fd7 GhantaKrishnamurthy MohanKrishna 2018-03-21 3591 :::::: The code at line 3449 was first introduced by commit :::::: 34b78a127c4fd57cf3d5c64031693d10a8e0fae1 tipc: add sock dump to new netlink api :::::: TO: Richard Alpe <richard.alpe@ericsson.com> :::::: CC: David S. Miller <davem@davemloft.net> --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org Intel Corporation
On Mon, Jan 06, 2020 at 12:23:24PM +0900, Masahiro Yamada wrote: > Since commit 69ea912fda74 ("kbuild: remove unneeded link_multi_deps"), > modules cannot link *.a archives. > > I do not see such a usecase in the upstream code, but multiple people > reported this issue, so it seems to be a desired feature for external > modules. Kernel policy is to not keep around infrastructure not used upstream. And linking archives in the kernel doesn't really make any sense, so this shouldn't go in in any form.
On Wed, Jan 08, 2020 at 07:44:06AM -0800, Christoph Hellwig wrote: > On Mon, Jan 06, 2020 at 12:23:24PM +0900, Masahiro Yamada wrote: > > Since commit 69ea912fda74 ("kbuild: remove unneeded link_multi_deps"), > > modules cannot link *.a archives. > > > > I do not see such a usecase in the upstream code, but multiple people > > reported this issue, so it seems to be a desired feature for external > > modules. > > Kernel policy is to not keep around infrastructure not used upstream. > And linking archives in the kernel doesn't really make any sense, so > this shouldn't go in in any form. Yeah, I agree, it's just going to bit-rot and people really shouldn't be doing stuff like this in their kernel modules. If they want to, they need to figure out how to do it themselves :) greg k-h
On Thu, Jan 9, 2020 at 12:48 AM Greg Kroah-Hartman <gregkh@linuxfoundation.org> wrote: > > On Wed, Jan 08, 2020 at 07:44:06AM -0800, Christoph Hellwig wrote: > > On Mon, Jan 06, 2020 at 12:23:24PM +0900, Masahiro Yamada wrote: > > > Since commit 69ea912fda74 ("kbuild: remove unneeded link_multi_deps"), > > > modules cannot link *.a archives. > > > > > > I do not see such a usecase in the upstream code, but multiple people > > > reported this issue, so it seems to be a desired feature for external > > > modules. > > > > Kernel policy is to not keep around infrastructure not used upstream. > > And linking archives in the kernel doesn't really make any sense, so > > this shouldn't go in in any form. > > Yeah, I agree, it's just going to bit-rot and people really shouldn't be > doing stuff like this in their kernel modules. > > If they want to, they need to figure out how to do it themselves :) > > greg k-h OK, I will abandon this patch.
diff --git a/scripts/Makefile.build b/scripts/Makefile.build index b734ac8a654e..a8481b765ea8 100644 --- a/scripts/Makefile.build +++ b/scripts/Makefile.build @@ -265,8 +265,10 @@ $(obj)/%.o: $(src)/%.c $(recordmcount_source) $(objtool_dep) FORCE $(call cmd,force_checksrc) $(call if_changed_rule,cc_o_c) +multi-m-prereqs = $(addprefix $(obj)/, $($*-objs) $($*-y) $($*-m)) + cmd_mod = { \ - echo $(if $($*-objs)$($*-y)$($*-m), $(addprefix $(obj)/, $($*-objs) $($*-y) $($*-m)), $(@:.mod=.o)); \ + echo $(if $(multi-m-prereqs), $(multi-m-prereqs), $(@:.mod=.o)); \ $(cmd_undef_syms); \ } > $@ @@ -427,13 +429,13 @@ targets += $(obj)/lib-ksyms.o endif # NOTE: -# Do not replace $(filter %.o,^) with $(real-prereqs). When a single object +# Do not replace $(multi-m-prereqs) with $(real-prereqs). When a single object # module is turned into a multi object module, $^ will contain header file # dependencies recorded in the .*.cmd file. quiet_cmd_link_multi-m = LD [M] $@ - cmd_link_multi-m = $(LD) $(ld_flags) -r -o $@ $(filter %.o,$^) + cmd_link_multi-m = $(LD) $(ld_flags) -r -o $@ $(multi-m-prereqs) -$(multi-used-m): FORCE +$(multi-used-m): $(obj)/%.o: FORCE $(call if_changed,link_multi-m) $(call multi_depend, $(multi-used-m), .o, -objs -y -m)
Since commit 69ea912fda74 ("kbuild: remove unneeded link_multi_deps"), modules cannot link *.a archives. I do not see such a usecase in the upstream code, but multiple people reported this issue, so it seems to be a desired feature for external modules. For example, libfoo.a is not linked in the following test case: obj-m := foo.o foo-objs := foo1.o libfoo.a Instead of reverting the offending commit, I wrote slightly cleaner code. I added multi-m-prereqs to avoid code duplication. Reported-by: Fumiya Shigemitsu <shfy1014@gmail.com> Reported-by: Yongxin Liu <yongxin.liu@windriver.com> Signed-off-by: Masahiro Yamada <masahiroy@kernel.org> --- scripts/Makefile.build | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-)