lkml.org 
[lkml]   [2012]   [Jun]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [patch 12/12] mm: correctly synchronize rss-counters at exit/exec
Oleg Nesterov wrote:
> On 06/08, Konstantin Khlebnikov wrote:
>>
>> As result you can see "BUG: Bad rss-counter state mm:ffff88040783a680 idx:1 val:-1" in dmesg
>>
>> There left only one problem: nobody calls sync_mm_rss() after put_user() in mm_release().
>
> Both callers call sync_mm_rss() to make check_mm() happy. But please
> see the changelog, I think we should move it into mm_release(). See
> the patch below (on top of v2 I sent). I need to recheck.

Patch below broken: it removes one hunk from kernel/exit.c twice.
And it does not add anything into mm_release().

>
> As for xacct_add_tsk(), yes it can "miss" that put_user(). But this
> is what we have now, I think we do not care.
>
> Oleg.
>
> --- x/fs/exec.c
> +++ x/fs/exec.c
> @@ -822,7 +822,6 @@ static int exec_mmap(struct mm_struct *m
> mm_release(tsk, old_mm);
>
> if (old_mm) {
> - sync_mm_rss(old_mm);
> /*
> * Make sure that if there is a core dump in progress
> * for the old mm, we get out and die instead of going
> --- x/kernel/exit.c
> +++ x/kernel/exit.c
> @@ -656,7 +656,6 @@ static void exit_mm(struct task_struct *
> if (!mm)
> return;
>
> - sync_mm_rss(mm);
> /*
> * Serialize with any possible pending coredump.
> * We must hold mmap_sem around checking core_state
> --- x/kernel/taskstats.c
> +++ x/kernel/taskstats.c
> @@ -630,8 +630,7 @@ void taskstats_exit(struct task_struct *
> if (!stats)
> goto err;
>
> - if (tsk->mm)
> - sync_mm_rss(tsk->mm);
> + sync_mm_rss(tsk->mm);
> fill_stats(tsk, stats);
>
> /*
> --- x/kernel/exit.c
> +++ x/kernel/exit.c
> @@ -656,7 +656,6 @@ static void exit_mm(struct task_struct *
> if (!mm)
> return;
>
> - sync_mm_rss(mm);
> /*
> * Serialize with any possible pending coredump.
> * We must hold mmap_sem around checking core_state
>



\
 
 \ /
  Last update: 2012-06-08 16:01    [W:0.068 / U:0.608 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site