git.openpandora.org
/
pandora-kernel.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
e6e5cda
)
modules: fix module "notes" kobject leak
author
Alexey Dobriyan
<adobriyan@gmail.com>
Thu, 16 Oct 2008 22:05:10 +0000
(22:05 +0000)
committer
Greg Kroah-Hartman
<gregkh@suse.de>
Wed, 22 Oct 2008 21:20:57 +0000
(14:20 -0700)
commit
e94320939f44e0cbaccc3f259a5778abced4949c
upstream
Fix "notes" kobject leak
It happens every rmmod if KALLSYMS=y and SYSFS=y.
# modprobe foo
kobject: 'foo' (
ffffffffa00743d0
): kobject_add_internal: parent: 'module', set: 'module'
kobject: 'holders' (
ffff88017e7c5770
): kobject_add_internal: parent: 'foo', set: '<NULL>'
kobject: 'foo' (
ffffffffa00743d0
): kobject_uevent_env
kobject: 'foo' (
ffffffffa00743d0
): fill_kobj_path: path = '/module/foo'
kobject: 'notes' (
ffff88017fa9b668
): kobject_add_internal: parent: 'foo', set: '<NULL>'
^^^^^
# rmmod foo
kobject: 'holders' (
ffff88017e7c5770
): kobject_cleanup
kobject: 'holders' (
ffff88017e7c5770
): auto cleanup kobject_del
kobject: 'holders' (
ffff88017e7c5770
): calling ktype release
kobject: (
ffff88017e7c5770
): dynamic_kobj_release
kobject: 'holders': free name
kobject: 'foo' (
ffffffffa00743d0
): kobject_cleanup
kobject: 'foo' (
ffffffffa00743d0
): does not have a release() function, it is broken and must be fixed.
kobject: 'foo' (
ffffffffa00743d0
): auto cleanup 'remove' event
kobject: 'foo' (
ffffffffa00743d0
): kobject_uevent_env
kobject: 'foo' (
ffffffffa00743d0
): fill_kobj_path: path = '/module/foo'
kobject: 'foo' (
ffffffffa00743d0
): auto cleanup kobject_del
kobject: 'foo': free name
[whooops]
Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
kernel/module.c
patch
|
blob
|
history
diff --git
a/kernel/module.c
b/kernel/module.c
index
9db1191
..
d5fcd24
100644
(file)
--- a/
kernel/module.c
+++ b/
kernel/module.c
@@
-1173,7
+1173,7
@@
static void free_notes_attrs(struct module_notes_attrs *notes_attrs,
while (i-- > 0)
sysfs_remove_bin_file(notes_attrs->dir,
¬es_attrs->attrs[i]);
- kobject_
del
(notes_attrs->dir);
+ kobject_
put
(notes_attrs->dir);
}
kfree(notes_attrs);
}