Thread (13 messages) 13 messages, 6 authors, 2012-06-11

Re: [patch 12/12] mm: correctly synchronize rss-counters at exit/exec

From: Linus Torvalds <torvalds@linux-foundation.org>
Date: 2012-06-08 01:18:52
Also in: linux-mm, lkml

On Thu, Jun 7, 2012 at 6:05 PM, Markus Trippelsdorf
[off-list ref] wrote:
You've somehow merged the wrong patch.
The correct version can be found here:
http://marc.info/?l=linux-kernel&m=133848759505805
It looks like Andrew sent me a bad version.

However, that patch you point at isn't good *either*.

It does totally insane things in xacct_add_tsk(). You can't call
"sync_mm_rss(mm)" on somebody elses mm, yet that is exactly what it
does (and you can't pass in another thread pointer either, since the
whole point of the per-thread counters is that they don't have locking
and aren't atomic, so you can't read them from any other context than
"current").

The thing is, the *only* point where it makes sense to sync the rss
pointers is when you detach the mm from the current thread. And
possibly at "fork()" time, *before* you duplicate the "struct
task_struct" and pollute the new one with stale rss counter values
from the old one.

So doing sync_mm_rss() in xacct_add_tsk() is crazy. Doing it
*anywhere* where mm is not clearly "current->mm" is wrong. If there is
a "get_task_mm()" or similar nearby, it's wrong, it's crap, and it
shouldn't be done.

Oleg, please rescue me? Your patch looks much closer to sane, but it's
not quite there..

          Linus
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help