【标题描述】关闭CONFIG_NET同时使能CONFIG_EXT4_FS时链接出错
【环境信息】
软件信息:
1) openEuler 22.03 SP2
2) kernel 5.10
【问题复现步骤】
具体操作步骤
关闭CONFIG_NET同时使能CONFIG_EXT4_FS
然后编译内核,报错如下:
AR drivers/acpi/built-in.a
AR drivers/built-in.a
GEN .version
CHK include/generated/compile.h
UPD include/generated/compile.h
CC init/version.o
AR init/built-in.a
LD vmlinux.o
MODPOST vmlinux.symvers
MODINFO modules.builtin.modinfo
GEN modules.builtin
LD .tmp_vmlinux.btf
ld: Unexpected GOT/PLT entries detected!
ld: Unexpected run-time procedure linkages detected!
ld: fs/ext4/super.o: in function `alloc_skb':
/home/linux-5.10.0-153.22.0.98.oe2203sp2.aarch64/./include/linux/skbuff.h:1113: undefined reference to `__alloc_skb'
ld: fs/ext4/super.o: in function `nlmsg_put':
/home/linux-5.10.0-153.22.0.98.oe2203sp2.aarch64/./include/net/netlink.h:925: undefined reference to `__nlmsg_put'
ld: fs/ext4/super.o: in function `ext4_netlink_send_info':
/home/linux-5.10.0-153.22.0.98.oe2203sp2.aarch64/fs/ext4/super.c:646: undefined reference to `netlink_broadcast'
ld: /home/linux-5.10.0-153.22.0.98.oe2203sp2.aarch64/fs/ext4/super.c:651: undefined reference to `kfree_skb'
ld: fs/ext4/super.o: in function `netlink_kernel_create':
/home/linux-5.10.0-153.22.0.98.oe2203sp2.aarch64/./include/linux/netlink.h:60: undefined reference to `init_net'
ld: fs/ext4/super.o: relocation R_AARCH64_ADR_PREL_PG_HI21 against symbol `init_net' which may bind externally can not be used when making a shared object; recompile with -fPIC
/home/linux-5.10.0-153.22.0.98.oe2203sp2.aarch64/./include/linux/netlink.h:60:(.init.text+0x1a4): dangerous relocation: unsupported relocation
ld: /home/linux-5.10.0-153.22.0.98.oe2203sp2.aarch64/./include/linux/netlink.h:60: undefined reference to `init_net'
ld: /home/linux-5.10.0-153.22.0.98.oe2203sp2.aarch64/./include/linux/netlink.h:60: undefined reference to `__netlink_kernel_create'
ld: fs/ext4/super.o: in function `ext4_exit_fs':
/home/linux-5.10.0-153.22.0.98.oe2203sp2.aarch64/fs/ext4/super.c:6956: undefined reference to `netlink_kernel_release'
BTF .btf.vmlinux.bin.o
tag__check_id_drift: subroutine_type id drift, core_id: 2243, btf_type_id: 2241, type_id_off: 0
libbpf: Unsupported BTF_KIND:0
btf_elf__encode: btf__new failed!
free(): double free detected in tcache 2
scripts/link-vmlinux.sh: line 147: 2252400 Aborted (core dumped) LLVM_OBJCOPY="${OBJCOPY}" ${PAHOLE} -J ${PAHOLE_FLAGS} ${1}
LD .tmp_vmlinux.kallsyms1
.btf.vmlinux.bin.o: file not recognized: file format not recognized
make: *** [Makefile:1206: vmlinux] Error 1
解决方案:
若使能CONFIG_ETHTOOL_NETLINK=y,则内核可以正常编译及链接。
出现概率(是否必现,概率性错误)
必现
问题:
看了下,是32174988624144de9e93357306e5a7bcdb44d7b0这个patch在openEuler中添加了ext4系统error的netlink上报
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
内部版本有添加宏控 CONFIG_EXT4_ERROR_REPORT 来控制 netlink 故障上报这个问题, 通过 config 依赖可以避免上面这个问题。
但是现在 netlink 故障上报在 openEuler 没有宏控相当于是默认打开的,添加 config 控制之后是默认关闭的,不清楚有没有下游在使用该功能,因此避免变更未合入
登录 后才可以发表评论