lkml.org 
[lkml]   [2011]   [Nov]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[132/264] [S390] memory leak with RCU_TABLE_FREE
    3.1-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Martin Schwidefsky <schwidefsky@de.ibm.com>

    commit e73b7fffe487c315fd1a4fa22282e3362b440a06 upstream.

    The rcu page table free code uses a couple of bits in the page table
    pointer passed to tlb_remove_table to discern the different page table
    types. __tlb_remove_table extracts the type with an incorrect mask which
    leads to memory leaks. The correct mask is ((FRAG_MASK << 4) | FRAG_MASK).

    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

    ---
    arch/s390/mm/pgtable.c | 5 +++--
    1 file changed, 3 insertions(+), 2 deletions(-)

    --- a/arch/s390/mm/pgtable.c
    +++ b/arch/s390/mm/pgtable.c
    @@ -662,8 +662,9 @@ void page_table_free_rcu(struct mmu_gath

    void __tlb_remove_table(void *_table)
    {
    - void *table = (void *)((unsigned long) _table & PAGE_MASK);
    - unsigned type = (unsigned long) _table & ~PAGE_MASK;
    + const unsigned long mask = (FRAG_MASK << 4) | FRAG_MASK;
    + void *table = (void *)((unsigned long) _table & ~mask);
    + unsigned type = (unsigned long) _table & mask;

    if (type)
    __page_table_free_rcu(table, type);



    \
     
     \ /
      Last update: 2011-11-10 05:07    [W:2.637 / U:0.060 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site