kobject: Always build in kernel/ksysfs.o.
PATCH 1/1 kobject: Always build in kernel/ksysfs.o.
kernel/ksysfs.c seems to be a random dumping group for misc globals that the rest of the tree depend on. This has caused problems with exports in the past when sysfs is disabled, which can already be observed in commit-id 51107301b629640f9ab76fe23bf385e187b9ac29.
The latest one is the kernel_kobj usage, which presently results in:
fs/built-in.o: In function `debugfs_init':
inode.c:(.init.text+0xc34): undefined reference to `kernel_kobj'
make: *** [.tmp_vmlinux1] Error 1
kernel/ksysfs.c itself at this point only contains globals and some basic sysfs initialization, the sysfs initialization code is optimized out when we build with sysfs disabled. Given that, it's easier to just build in unconditionally, rather than trying to find some other random place to dump and initialize the globals.
Additionally, the current trend seems to be decoupling of kobjects from sysfs, in which case it still makes sense to perform the kernel_kobj initialization that happens here even if sysfs is disabled, as lib/kobject.o is built-in unconditionally.
---
kernel/Makefile | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-)
kernel/Makefile +1 -2
@@ -9,7 +9,7 @@ obj-y = sched.o fork.o exec_domain.o panic.o printk.o profile.o \ rcupdate.o extable.o params.o posix-timers.o \ kthread.o wait.o kfifo.o sys_ni.o posix-cpu-timers.o mutex.o \ hrtimer.o rwsem.o latency.o nsproxy.o srcu.o \ - utsname.o notifier.o + utsname.o notifier.o ksysfs.o obj-$(CONFIG_SYSCTL) += sysctl_check.o obj-$(CONFIG_STACKTRACE) += stacktrace.o
@@ -49,7 +49,6 @@ obj-$(CONFIG_AUDIT) += audit.o auditfilter.o obj-$(CONFIG_AUDITSYSCALL) += auditsc.o obj-$(CONFIG_AUDIT_TREE) += audit_tree.o obj-$(CONFIG_KPROBES) += kprobes.o -obj-$(CONFIG_SYSFS) += ksysfs.o obj-$(CONFIG_DETECT_SOFTLOCKUP) += softlockup.o obj-$(CONFIG_GENERIC_HARDIRQS) += irq/ obj-$(CONFIG_SECCOMP) += seccomp.o
Quoted 17 lines · Paul Mundt
kernel/ksysfs.cseems to be a random dumping group for misc globals that the rest of the tree depend on. This has caused problems with exports in the past when sysfs is disabled, which can already be observed in commit-id51107301b629640f9ab76fe23bf385e187b9ac29.The latest one is the
kernel_kobjusage, which presently results in:
fs/built-in.o: In function `debugfs_init':
inode.c:(.init.text+0xc34): undefined reference to `kernel_kobj'
make: *** [.tmp_vmlinux1] Error 1
kernel/ksysfs.citself at this point only contains globals and some basic sysfs initialization, the sysfs initialization code is optimized out when we build with sysfs disabled. Given that, it's easier to just build in unconditionally, rather than trying to find some other random place to dump and initialize the globals.
Quoted 6 lines
Additionally, the current trend seems to be decoupling of kobjects from sysfs, in which case it still makes sense to perform the
kernel_kobjinitialization that happens here even if sysfs is disabled, aslib/kobject.ois built-in unconditionally.Signed-off-by Paul Mundt <[email protected]>
I'll take this, it looks right, but I don't think it fixes the kernel_kobj problem, that shows up in a number of other places too. I'm working on fixing that up properly right now, give me a day, I'm doing builds with tons of different kernel options :)
thanks,
greg k-h
Quoted 23 lines · Greg KH
Quoted 22 lines · Paul Mundt
kernel/ksysfs.cseems to be a random dumping group for misc globals that the rest of the tree depend on. This has caused problems with exports in the past when sysfs is disabled, which can already be observed in commit-id51107301b629640f9ab76fe23bf385e187b9ac29.The latest one is the
kernel_kobjusage, which presently results in:
fs/built-in.o: In function `debugfs_init':
inode.c:(.init.text+0xc34): undefined reference to `kernel_kobj'
make: *** [.tmp_vmlinux1] Error 1
kernel/ksysfs.citself at this point only contains globals and some basic sysfs initialization, the sysfs initialization code is optimized out when we build with sysfs disabled. Given that, it's easier to just build in unconditionally, rather than trying to find some other random place to dump and initialize the globals.Additionally, the current trend seems to be decoupling of kobjects from sysfs, in which case it still makes sense to perform the
kernel_kobjinitialization that happens here even if sysfs is disabled, aslib/kobject.ois built-in unconditionally.
Quoted 7 lines
Quoted 1 line
Signed-off-by Paul Mundt <[email protected]>I'll take this, it looks right, but I don't think it fixes the
kernel_kobjproblem, that shows up in a number of other places too. I'm working on fixing that up properly right now, give me a day, I'm doing builds with tons of different kernel options :)
Thanks. At least it makes the link error go away, which is the only kernel_kobj problem I had. If there's a greater conceptual problem with kernel_kobj, that's out of scope for this patch, and I defer to you on such matters ;-)