OpenVZ Forum


Home » Mailing lists » Devel » [PATCH] Fix leaks on /proc/{*/sched, sched_debug, timer_list, timer_stats}
[PATCH] Fix leaks on /proc/{*/sched, sched_debug, timer_list, timer_stats} [message #15036] Tue, 17 July 2007 12:25 Go to next message
Alexey Dobriyan is currently offline  Alexey Dobriyan
Messages: 195
Registered: August 2006
Senior Member
On every open/close one struct seq_operations leaks.
Kudos to /proc/slab_allocators.

Signed-off-by: Alexey Dobriyan <adobriyan@sw.ru>
---

fs/proc/base.c | 2 +-
kernel/sched_debug.c | 2 +-
kernel/time/timer_list.c | 2 +-
kernel/time/timer_stats.c | 2 +-
4 files changed, 4 insertions(+), 4 deletions(-)

--- a/fs/proc/base.c
+++ b/fs/proc/base.c
@@ -926,7 +926,7 @@ static const struct file_operations proc_pid_sched_operations = {
.read = seq_read,
.write = sched_write,
.llseek = seq_lseek,
- .release = seq_release,
+ .release = single_release,
};

#endif
--- a/kernel/sched_debug.c
+++ b/kernel/sched_debug.c
@@ -200,7 +200,7 @@ static struct file_operations sched_debug_fops = {
.open = sched_debug_open,
.read = seq_read,
.llseek = seq_lseek,
- .release = seq_release,
+ .release = single_release,
};

static int __init init_sched_debug_procfs(void)
--- a/kernel/time/timer_list.c
+++ b/kernel/time/timer_list.c
@@ -267,7 +267,7 @@ static struct file_operations timer_list_fops = {
.open = timer_list_open,
.read = seq_read,
.llseek = seq_lseek,
- .release = seq_release,
+ .release = single_release,
};

static int __init init_timer_list_procfs(void)
--- a/kernel/time/timer_stats.c
+++ b/kernel/time/timer_stats.c
@@ -399,7 +399,7 @@ static struct file_operations tstats_fops = {
.read = seq_read,
.write = tstats_write,
.llseek = seq_lseek,
- .release = seq_release,
+ .release = single_release,
};

void __init init_timer_stats(void)
Re: [PATCH] Fix leaks on /proc/{*/sched,sched_debug,timer_list,timer_stats} [message #15037 is a reply to message #15036] Tue, 17 July 2007 12:36 Go to previous messageGo to next message
Ingo Molnar is currently offline  Ingo Molnar
Messages: 51
Registered: December 2005
Member
* Alexey Dobriyan <adobriyan@sw.ru> wrote:

> On every open/close one struct seq_operations leaks.
> Kudos to /proc/slab_allocators.
>
> Signed-off-by: Alexey Dobriyan <adobriyan@sw.ru>

ouch ...

Acked-by: Ingo Molnar <mingo@elte.hu>

-stable material too, as far as timer_info/stats goes.

> - .release = seq_release,
> + .release = single_release,

i think seq_release() definitely needs to grow a WARN_ON() if it's being
used on an inode that was opened via single_open(). This bug is so
easily committed, and nothing but a small leak reminds us on it.

Ingo
[PATCH] Fix leak on /proc/lockdep_stats [message #15041 is a reply to message #15037] Tue, 17 July 2007 12:57 Go to previous messageGo to next message
Alexey Dobriyan is currently offline  Alexey Dobriyan
Messages: 195
Registered: August 2006
Senior Member
On Tue, Jul 17, 2007 at 02:36:10PM +0200, Ingo Molnar wrote:
> * Alexey Dobriyan <adobriyan@sw.ru> wrote:
>
> > On every open/close one struct seq_operations leaks.
> > Kudos to /proc/slab_allocators.
> >
> > Signed-off-by: Alexey Dobriyan <adobriyan@sw.ru>
>
> ouch ...
>
> Acked-by: Ingo Molnar <mingo@elte.hu>
>
> -stable material too, as far as timer_info/stats goes.
>
> > - .release = seq_release,
> > + .release = single_release,
>
> i think seq_release() definitely needs to grow a WARN_ON() if it's being
> used on an inode that was opened via single_open(). This bug is so
> easily committed, and nothing but a small leak reminds us on it.

Yeah, I'll try to come up with something clean.

Meanwhile full single_open() audit revealed one more such leak.
The rest seems OK.

[PATCH] Fix leak on /proc/lockdep_stats

Signed-off-by: Alexey Dobriyan <adobriyan@sw.ru>
---

kernel/lockdep_proc.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

--- a/kernel/lockdep_proc.c
+++ b/kernel/lockdep_proc.c
@@ -339,7 +339,7 @@ static const struct file_operations proc_lockdep_stats_operations = {
.open = lockdep_stats_open,
.read = seq_read,
.llseek = seq_lseek,
- .release = seq_release,
+ .release = single_release,
};

static int __init lockdep_proc_init(void)
Re: [PATCH] Fix leaks on /proc/{*/sched,sched_debug,timer_list,timer_stats} [message #15061 is a reply to message #15037] Wed, 18 July 2007 00:53 Go to previous messageGo to next message
Andrew Morton is currently offline  Andrew Morton
Messages: 127
Registered: December 2005
Senior Member
On Tue, 17 Jul 2007 14:36:10 +0200
Ingo Molnar <mingo@elte.hu> wrote:

>
> * Alexey Dobriyan <adobriyan@sw.ru> wrote:
>
> > On every open/close one struct seq_operations leaks.
> > Kudos to /proc/slab_allocators.
> >
> > Signed-off-by: Alexey Dobriyan <adobriyan@sw.ru>
>
> ouch ...
>
> Acked-by: Ingo Molnar <mingo@elte.hu>
>
> -stable material too, as far as timer_info/stats goes.

So I have a patch which will not fully apply to -stable.

Sorry, but I can't be bothered splitting it up. Greg, Chris: please just
apply the bits which apply and drop the other bits if that's OK.
Re: [PATCH] Fix leaks on /proc/{*/sched,sched_debug,timer_list,timer_stats} [message #15321 is a reply to message #15061] Wed, 18 July 2007 01:28 Go to previous message
Chris Wright is currently offline  Chris Wright
Messages: 1
Registered: July 2007
Junior Member
* Andrew Morton (akpm@linux-foundation.org) wrote:
> Sorry, but I can't be bothered splitting it up. Greg, Chris: please just
> apply the bits which apply and drop the other bits if that's OK.

Yup
Previous Topic: [PATCH 1/1] user namespace: fix copy_user_ns return value
Next Topic: user namespace - introduction
Goto Forum:
  


Current Time: Tue Nov 19 03:38:47 GMT 2024

Total time taken to generate the page: 0.02988 seconds