* [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: 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 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 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: 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 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 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.