lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <1203426602.4240.10.camel@lov.site>
Date:	Tue, 19 Feb 2008 14:10:02 +0100
From:	Kay Sievers <kay.sievers@...y.org>
To:	Alexey Dobriyan <adobriyan@...ru>
Cc:	Andrew Morton <akpm@...ux-foundation.org>,
	linux-kernel@...r.kernel.org, Greg KH <greg@...ah.com>
Subject: Re: 2.6.25-rc1-sha1: WARNING: at lib/kref.c:43 kref_get+0x20/0x30()

On Tue, 2008-02-19 at 15:03 +0300, Alexey Dobriyan wrote:
> On Tue, Feb 19, 2008 at 09:19:25AM +0100, Kay Sievers wrote:
> > On Feb 18, 2008 1:59 PM, Andrew Morton <akpm@...ux-foundation.org> wrote:
> > > On Fri, 15 Feb 2008 14:08:53 +0300 Alexey Dobriyan <adobriyan@...ru> wrote:
> > >
> > > > Booting without SYSFS fills dmesg like this

> > Can you enable CONFIG_DEBUG_KOBJECT=y? It might give a hint where we
> > miss to initialization of a kobject when sysfs is not compiled in.
> 
> It looks like this:

> ------------[ cut here ]------------
> WARNING: at lib/kref.c:43 kref_get+0x2d/0x30()
> Modules linked in: battery(+) button dock thermal processor sbs ac sbshc af_packet loop
> Pid: 1642, comm: modprobe Not tainted 2.6.25-rc2 #2
> 
> Call Trace:
>  [<ffffffff8022a8cf>] warn_on_slowpath+0x5f/0x80
>  [<ffffffff8024cb06>] ? mark_held_locks+0x56/0xa0
>  [<ffffffff80282c00>] ? __slab_alloc+0xc0/0x4b0
>  [<ffffffff8024cc9f>] ? trace_hardirqs_on+0xbf/0x150
>  [<ffffffff802f7f87>] ? kvasprintf+0x57/0x90
>  [<ffffffff802f5c18>] ? vsnprintf+0x328/0x6e0
>  [<ffffffff802f7fa0>] ? kvasprintf+0x70/0x90
>  [<ffffffff802f1ced>] kref_get+0x2d/0x30
>  [<ffffffff802f0c4a>] kobject_get+0x1a/0x30
>  [<ffffffff802f0d39>] kobject_add_internal+0x59/0x160
>  [<ffffffff802f0f6e>] kobject_add_varg+0x6e/0x80
>  [<ffffffff802f1399>] kobject_add+0x69/0x90
>  [<ffffffff8024cc9f>] ? trace_hardirqs_on+0xbf/0x150
>  [<ffffffff802f1c4e>] ? kref_init+0xe/0x10
>  [<ffffffff802f0927>] ? kobject_init+0x37/0xa0
>  [<ffffffff802f09c3>] ? kobject_create+0x33/0x40
>  [<ffffffff802f13fe>] kobject_create_and_add+0x3e/0x80
>  [<ffffffff80255adf>] sys_init_module+0x19df/0x1b30
>  [<ffffffff8024d928>] ? __lock_acquire+0x748/0x10b0
>  [<ffffffff803249a0>] ? acpi_bus_register_driver+0x0/0x40
>  [<ffffffff8024cc9f>] ? trace_hardirqs_on+0xbf/0x150
>  [<ffffffff80406122>] ? trace_hardirqs_on_thunk+0x35/0x3a
>  [<ffffffff8020b57b>] system_call_after_swapgs+0x7b/0x80
> 
> ---[ end trace 033c2b23880cf02a ]---
> kobject: 'notes' (ffff81017ec370a8): kobject_add_internal: parent: '<NULL>', set: '<NULL>'

Ok, seems the "notes" directory should not be created if SYSFS is not
configured. The "notes" kobject tries to reference the module kobject as
a parent, which isn't initialized in that case.

Does that fix it?

Thanks,
Kay


From: Kay Sievers <kay.sievers@...y.org>
Subject: modules: do not try to add sysfs attributes if !CONFIG_SYSFS 

Signed-off-by: Kay Sievers <kay.sievers@...y.org>
---
 module.c |    8 +++-----
 1 file changed, 3 insertions(+), 5 deletions(-)

diff --git a/kernel/module.c b/kernel/module.c
index 92595ba..2dd60c8 100644
--- a/kernel/module.c
+++ b/kernel/module.c
@@ -987,6 +987,7 @@ static unsigned long resolve_symbol(Elf_Shdr *sechdrs,
 	return ret;
 }
 
+#ifdef CONFIG_SYSFS
 
 /*
  * /sys/module/foo/sections stuff
@@ -1169,7 +1170,7 @@ static void remove_notes_attrs(struct module *mod)
 		free_notes_attrs(mod->notes_attrs, mod->notes_attrs->notes);
 }
 
-#else
+#else /* CONFIG_KALLSYMS */
 
 static inline void add_sect_attrs(struct module *mod, unsigned int nsect,
 		char *sectstrings, Elf_Shdr *sechdrs)
@@ -1190,7 +1191,6 @@ static inline void remove_notes_attrs(struct module *mod)
 }
 #endif /* CONFIG_KALLSYMS */
 
-#ifdef CONFIG_SYSFS
 int module_add_modinfo_attrs(struct module *mod)
 {
 	struct module_attribute *attr;
@@ -1231,9 +1231,7 @@ void module_remove_modinfo_attrs(struct module *mod)
 	}
 	kfree(mod->modinfo_attrs);
 }
-#endif
 
-#ifdef CONFIG_SYSFS
 int mod_sysfs_init(struct module *mod)
 {
 	int err;
@@ -1299,7 +1297,7 @@ out_unreg:
 	kobject_put(&mod->mkobj.kobj);
 	return err;
 }
-#endif
+#endif /* CONFIG_SYSFS */
 
 static void mod_kobject_remove(struct module *mod)
 {


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ