Skip to content
  • Sebastian Andrzej Siewior's avatar
    mm: memcontrol: bring back the VM_BUG_ON() in mem_cgroup_swapout() · ce9ce665
    Sebastian Andrzej Siewior authored
    Clark stumbled over a VM_BUG_ON() in -RT which was then was removed by
    Johannes in commit f371763a
    
     ("mm: memcontrol: fix false-positive
    VM_BUG_ON() on -rt").  The comment before that patch was a tiny bit better
    than it is now.  While the patch claimed to fix a false-postive on -RT
    this was not the case.  None of the -RT folks ACKed it and it was not a
    false positive report.  That was a *real* problem.
    
    This patch updates the comment that is improper because it refers to
    "disabled preemption" as a consequence of that lock being taken.  A
    spin_lock() disables preemption, true, but in this case the code relies on
    the fact that the lock _also_ disables interrupts once it is acquired.
    And this is the important detail (which was checked the VM_BUG_ON()) which
    needs to be pointed out.  This is the hint one needs while looking at the
    code.  It was explained by Johannes on the list that the per-CPU variables
    are protected by local_irq_save().  The BUG_ON() was helpful.  This code
    has been workarounded in -RT in the meantime.  I wouldn't mind running
    into more of those if the code in question uses *special* kind of locking
    since now there is no verification (in terms of lockdep or BUG_ON()) and
    therefore I bring the VM_BUG_ON() check back in.
    
    The two functions after the comment could also have a "local_irq_save()"
    dance around them in order to serialize access to the per-CPU variables.
    This has been avoided because the interrupts should be off.
    
    Signed-off-by: default avatarSebastian Andrzej Siewior <bigeasy@linutronix.de>
    Acked-by: default avatarJohannes Weiner <hannes@cmpxchg.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Steven Rostedt <rostedt@goodmis.org>
    Cc: Clark Williams <williams@redhat.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    ce9ce665