login
Login
/
Register
Search
Search this site:
Forums
News
Blogs
Features
Site
Home
»
Mailing list archives
»
linux-kernel
»
2010
»
May
»
4
Re: [PULL] param sysfs oops (simple, leaky) fix, bool arrays fix
view
thread
Previous message: [
thread
] [
date
] [
author
]
Next message: [
thread
] [
date
] [
author
]
[view in full thread]
From: Rusty Russell
Subject:
Re: [PULL] param sysfs oops (simple, leaky) fix, bool arrays fix
Date: Monday, May 3, 2010 - 7:23 pm
On Tue, 27 Apr 2010 08:23:24 pm Artem Bityutskiy wrote:
quoted text
> On Tue, 2010-04-27 at 13:31 +0300, Artem Bityutskiy wrote: > > On Thu, 2009-10-29 at 09:02 +1030, Rusty Russell wrote: > > > (Thanks to Takashi-san, who found the oops and kept reading the code to spot > > > the others. A more complete fix is pending, but this works for 2.6.32 and > > > -stable: see commit message and FIXME in code.) > > > > > > The following changes since commit 964fe080d94db82a3268443e9b9ece4c60246414: > > > Linus Torvalds (1): > > > Merge git://git.kernel.org/.../rusty/linux-2.6-for-linus > > > > > > are available in the git repository at: > > > > > > ssh://master.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-param-fixes.git master > > > > > > Rusty Russell (3): > > > param: fix lots of bugs with writing charp params from sysfs, by leaking mem. > > > param: fix NULL comparison on oom > > > param: fix setting arrays of bool > > > > > > include/linux/moduleparam.h | 1 - > > > kernel/params.c | 17 ++++++----------- > > > 2 files changed, 6 insertions(+), 12 deletions(-) > > > > > > commit 65afac7d80ab3bc9f81e75eafb71eeb92a3ebdef > > > Author: Rusty Russell <rusty@rustcorp.com.au> > > > Date: Thu Oct 29 08:56:16 2009 -0600 > > > > > > param: fix lots of bugs with writing charp params from sysfs, by leaking mem. > > > > > > e180a6b7759a "param: fix charp parameters set via sysfs" fixed the case > > > where charp parameters written via sysfs were freed, leaving drivers > > > accessing random memory. > > > > > > Unfortunately, storing a flag in the kparam struct was a bad idea: it's > > > rodata so setting it causes an oops on some archs. But that's not all: > > > > > > 1) module_param_array() on charp doesn't work reliably, since we use an > > > uninitialized temporary struct kernel_param. > > > 2) there's a fundamental race if a module uses this parameter and then > > > it's changed: they will still access the old, freed, memory. > > > > > > The simplest fix (ie. for 2.6.32) is to never free the memory. This > > > prevents all these problems, at cost of a memory leak. In practice, there > > > are only 18 places where a charp is writable via sysfs, and all are > > > root-only writable. > > > > Hmm, is it really only about changing the parameters via sysfs? We see > > the following kmemleak complaints in 2.6.32 (I think it will be the same > > in the latest kernel, but I did not check): > > > > kmemleak: unreferenced object 0xdeff3c80 (size 64): > > kmemleak: comm "modprobe", pid 788, jiffies 4294933427 > > kmemleak: backtrace: > > kmemleak: [<c00e59b8>] __save_stack_trace+0x34/0x40 > > kmemleak: [<c00e5ad0>] create_object+0x10c/0x208 > > kmemleak: [<c03ae0ec>] kmemleak_alloc+0x40/0x84 > > kmemleak: [<c00dca74>] __kmalloc_track_caller+0x140/0x154 > > kmemleak: [<c00c47ac>] kstrdup+0x38/0x54 > > kmemleak: [<c0081854>] param_set_charp+0x68/0x94 > > kmemleak: [<c0081108>] parse_args+0x18c/0x280 > > kmemleak: [<c009fc74>] load_module+0x11e8/0x1644 > > kmemleak: [<c00a0130>] sys_init_module+0x60/0x1f4 > > kmemleak: [<c003c040>] ret_fast_syscall+0x0/0x38 > > > > So we are leaking on every insmod/rmmod, AFAICS, not just in the sysfs > > case. > > Rusty, correct me if I'm wrong, but it looks like the above memleak was > introduced by e180a6b7759a99a28cbcce3547c4c80822cb6c2a, where you added > the kstrdup(). So you kinda fixed the sysfs case (it still memleaks > though), but at the cost of additional insmod/rmmod leak, right?
Yep! Cheers, Rusty. --
unsubscribe notice
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to
majordomo@vger.kernel.org
More majordomo info at
http://vger.kernel.org/majordomo-info.html
Please read the FAQ at
http://www.tux.org/lkml/
Previous message: [
thread
] [
date
] [
author
]
Next message: [
thread
] [
date
] [
author
]
Messages in current thread:
[PULL] param sysfs oops (simple, leaky) fix, bool arrays fix
, Rusty Russell
, (Wed Oct 28, 3:32 pm)
Re: [PULL] param sysfs oops (simple, leaky) fix, bool arra ...
, Artem Bityutskiy
, (Tue Apr 27, 3:31 am)
Re: [PULL] param sysfs oops (simple, leaky) fix, bool arra ...
, Artem Bityutskiy
, (Tue Apr 27, 3:53 am)
Re: [PULL] param sysfs oops (simple, leaky) fix, bool arra ...
, Rusty Russell
, (Mon May 3, 7:23 pm)
Re: [PULL] param sysfs oops (simple, leaky) fix, bool arra ...
, Artem Bityutskiy
, (Tue May 4, 11:07 am)
Re: [PULL] param sysfs oops (simple, leaky) fix, bool arra ...
, Rusty Russell
, (Tue May 4, 10:33 pm)
Re: [PULL] param sysfs oops (simple, leaky) fix, bool arra ...
, Artem Bityutskiy
, (Wed May 5, 12:25 am)
Re: [PULL] param sysfs oops (simple, leaky) fix, bool arra ...
, Takashi Iwai
, (Wed May 5, 12:44 am)
Re: [PULL] param sysfs oops (simple, leaky) fix, bool arra ...
, Artem Bityutskiy
, (Wed May 5, 1:49 am)
Re: [PULL] param sysfs oops (simple, leaky) fix, bool arra ...
, Artem Bityutskiy
, (Wed May 5, 2:04 am)
Re: [PULL] param sysfs oops (simple, leaky) fix, bool arra ...
, Rusty Russell
, (Wed May 5, 7:28 pm)
Re: [PULL] param sysfs oops (simple, leaky) fix, bool arra ...
, Takashi Iwai
, (Wed May 5, 11:24 pm)
Re: [PULL] param sysfs oops (simple, leaky) fix, bool arra ...
, Phil Carmody
, (Tue Jun 22, 9:50 am)
Re: [PULL] param sysfs oops (simple, leaky) fix, bool arra ...
, Rusty Russell
, (Tue Jun 22, 4:23 pm)
Navigation
Create content
Mailing list archives
Recent posts
Popular discussions
linux-kernel
:
Sam Ravnborg
[PATCH 05/11] x86: add X86_64 dependency to x86_64 specific symbols in Kconfig.x86...
Brian Swetland
Re: Attempted summary of suspend-blockers LKML thread
Robert Marquardt
Re: [linux-usb-devel] usb hid: reset NumLock
Borislav Petkov
drm_vm.c:drm_mmap: possible circular locking dependency detected (was: Re: Linux 2...
Alexandre Oliva
Re: Dual-Licensing Linux Kernel with GPL V2 and GPL V3
git
:
Felipe Contreras
Re: [kernel.org users] [RFD] On deprecating "git-foo" for builtins
Paolo Ciarrocchi
Re: [kernel.org users] [RFD] On deprecating "git-foo" for builtins
Johannes Schindelin
Re: [PATCH] Fix install-doc-quick target
Peter Oberndorfer
Subject: [PATCH] fix stg edit command
Paolo Bonzini
Re: [PATCH 04/40] Windows: Use the Windows style PATH separator ';'.
git-commits-head
:
Linux Kernel Mailing List
New device ID for sc92031 [1088:2031]
Linux Kernel Mailing List
e1000e: Expose MDI-X status via ethtool change
Linux Kernel Mailing List
NFS: Store pages from an NFS inode into a local cache
Linux Kernel Mailing List
arm/imx/gpio: GPIO_INT_{HIGH,LOW}_LEV are not necessarily constant
Linux Kernel Mailing List
powerpc/kexec: Add support for FSL-BookE
linux-netdev
:
Andi Kleen
Re: RFC: Nagle latency tuning
Jarek Poplawski
Re: tc filter flow hash question
David Miller
Re: [RFC 0/5] generic rx recycling
Chuck Lever
Re: [RFC] ipv6: Change %pI6 format to output compacted addresses?
Jarek Poplawski
Re: socket api problem: can't bind an ipv6 socket to ::ffff:0.0.0.0
openbsd-misc
:
Theo de Raadt
Re: RES: OpenBSD on IBM System X3550 7879
Bret S. Lambert
Re: any web management gui for pf ?
Rob Shepherd
x86 hardware for router system
Nick Holland
Re: Install OpenBSD from USB ?
Nick Holland
Re: 1 out of 3 hunks failed--saving rejects to kerberosV/src/lib/krb5/crypto.c.rej
Colocation donated by:
Syndicate