* [PATCH] kbuild: allow modules to link *.a archives @ 2020-01-06 3:23 Masahiro Yamada 2020-01-06 6:12 ` kbuild test robot ` (2 more replies) 0 siblings, 3 replies; 10+ messages in thread From: Masahiro Yamada @ 2020-01-06 3:23 UTC (permalink / raw) To: linux-kbuild Cc: Fumiya Shigemitsu, Yongxin Liu, Masahiro Yamada, Michal Marek, linux-kernel 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(-) 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) -- 2.17.1 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH] kbuild: allow modules to link *.a archives 2020-01-06 3:23 [PATCH] kbuild: allow modules to link *.a archives Masahiro Yamada 2020-01-06 6:12 ` kbuild test robot @ 2020-01-06 6:12 ` kbuild test robot 2020-01-08 15:44 ` Christoph Hellwig 2 siblings, 0 replies; 10+ messages in thread From: kbuild test robot @ 2020-01-06 6:12 UTC (permalink / raw) To: Masahiro Yamada Cc: kbuild-all, linux-kbuild, Fumiya Shigemitsu, Yongxin Liu, Masahiro Yamada, Michal Marek, linux-kernel [-- Attachment #1: Type: text/plain, Size: 5893 bytes --] 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 [-- Attachment #2: .config.gz --] [-- Type: application/gzip, Size: 30764 bytes --] ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] kbuild: allow modules to link *.a archives @ 2020-01-06 6:12 ` kbuild test robot 0 siblings, 0 replies; 10+ messages in thread From: kbuild test robot @ 2020-01-06 6:12 UTC (permalink / raw) To: kbuild-all [-- Attachment #1: Type: text/plain, Size: 5959 bytes --] 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(a)lists.01.org Intel Corporation [-- Attachment #2: config.gz --] [-- Type: application/gzip, Size: 30764 bytes --] ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] kbuild: allow modules to link *.a archives @ 2020-01-06 6:12 ` kbuild test robot 0 siblings, 0 replies; 10+ messages in thread From: kbuild test robot @ 2020-01-06 6:12 UTC (permalink / raw) To: Masahiro Yamada Cc: kbuild-all, linux-kbuild, Fumiya Shigemitsu, Yongxin Liu, Michal Marek, linux-kernel [-- Attachment #1: Type: text/plain, Size: 5893 bytes --] 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 [-- Attachment #2: .config.gz --] [-- Type: application/gzip, Size: 30764 bytes --] ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] kbuild: allow modules to link *.a archives 2020-01-06 3:23 [PATCH] kbuild: allow modules to link *.a archives Masahiro Yamada 2020-01-06 6:12 ` kbuild test robot @ 2020-01-06 6:47 ` kbuild test robot 2020-01-08 15:44 ` Christoph Hellwig 2 siblings, 0 replies; 10+ messages in thread From: kbuild test robot @ 2020-01-06 6:47 UTC (permalink / raw) To: Masahiro Yamada Cc: kbuild-all, linux-kbuild, Fumiya Shigemitsu, Yongxin Liu, Masahiro Yamada, Michal Marek, linux-kernel [-- Attachment #1: Type: text/plain, Size: 29087 bytes --] 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 [-- Attachment #2: .config.gz --] [-- Type: application/gzip, Size: 44119 bytes --] ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] kbuild: allow modules to link *.a archives @ 2020-01-06 6:47 ` kbuild test robot 0 siblings, 0 replies; 10+ messages in thread From: kbuild test robot @ 2020-01-06 6:47 UTC (permalink / raw) To: kbuild-all [-- Attachment #1: Type: text/plain, Size: 29434 bytes --] 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(a)lists.01.org Intel Corporation [-- Attachment #2: config.gz --] [-- Type: application/gzip, Size: 44119 bytes --] ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] kbuild: allow modules to link *.a archives @ 2020-01-06 6:47 ` kbuild test robot 0 siblings, 0 replies; 10+ messages in thread From: kbuild test robot @ 2020-01-06 6:47 UTC (permalink / raw) To: Masahiro Yamada Cc: kbuild-all, linux-kbuild, Fumiya Shigemitsu, Yongxin Liu, Michal Marek, linux-kernel [-- Attachment #1: Type: text/plain, Size: 29087 bytes --] 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 [-- Attachment #2: .config.gz --] [-- Type: application/gzip, Size: 44119 bytes --] ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] kbuild: allow modules to link *.a archives 2020-01-06 3:23 [PATCH] kbuild: allow modules to link *.a archives Masahiro Yamada 2020-01-06 6:12 ` kbuild test robot 2020-01-06 6:47 ` kbuild test robot @ 2020-01-08 15:44 ` Christoph Hellwig 2020-01-08 15:48 ` Greg Kroah-Hartman 2 siblings, 1 reply; 10+ messages in thread From: Christoph Hellwig @ 2020-01-08 15:44 UTC (permalink / raw) To: Masahiro Yamada Cc: linux-kbuild, Fumiya Shigemitsu, Yongxin Liu, Michal Marek, linux-kernel, Greg Kroah-Hartman 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. ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] kbuild: allow modules to link *.a archives 2020-01-08 15:44 ` Christoph Hellwig @ 2020-01-08 15:48 ` Greg Kroah-Hartman 2020-01-11 7:22 ` Masahiro Yamada 0 siblings, 1 reply; 10+ messages in thread From: Greg Kroah-Hartman @ 2020-01-08 15:48 UTC (permalink / raw) To: Christoph Hellwig Cc: Masahiro Yamada, linux-kbuild, Fumiya Shigemitsu, Yongxin Liu, Michal Marek, linux-kernel 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 ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] kbuild: allow modules to link *.a archives 2020-01-08 15:48 ` Greg Kroah-Hartman @ 2020-01-11 7:22 ` Masahiro Yamada 0 siblings, 0 replies; 10+ messages in thread From: Masahiro Yamada @ 2020-01-11 7:22 UTC (permalink / raw) To: Greg Kroah-Hartman Cc: Christoph Hellwig, Linux Kbuild mailing list, Fumiya Shigemitsu, Yongxin Liu, Michal Marek, Linux Kernel Mailing List 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. -- Best Regards Masahiro Yamada ^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2020-01-11 7:23 UTC | newest] Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2020-01-06 3:23 [PATCH] kbuild: allow modules to link *.a archives Masahiro Yamada 2020-01-06 6:12 ` kbuild test robot 2020-01-06 6:12 ` kbuild test robot 2020-01-06 6:12 ` kbuild test robot 2020-01-06 6:47 ` kbuild test robot 2020-01-06 6:47 ` kbuild test robot 2020-01-06 6:47 ` kbuild test robot 2020-01-08 15:44 ` Christoph Hellwig 2020-01-08 15:48 ` Greg Kroah-Hartman 2020-01-11 7:22 ` Masahiro Yamada
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.