lkml.org 
[lkml]   [2012]   [Jun]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[ 06/82] mm: fix NULL ptr deref when walking hugepages
    3.4-stable review patch.  If anyone has any objections, please let me know.

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

    From: Sasha Levin <levinsasha928@gmail.com>

    commit 08fa29d916c6e271ad13978cd993e7238c68db97 upstream.

    A missing validation of the value returned by find_vma() could cause a
    NULL ptr dereference when walking the pagetable.

    This is triggerable from usermode by a simple user by trying to read a
    page info out of /proc/pid/pagemap which doesn't exist.

    Introduced by commit 025c5b2451e4 ("thp: optimize away unnecessary page
    table locking").

    Signed-off-by: Sasha Levin <levinsasha928@gmail.com>
    Reviewed-by: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
    Cc: David Rientjes <rientjes@google.com>
    Cc: Andi Kleen <andi@firstfloor.org>
    Cc: Andrea Arcangeli <aarcange@redhat.com>
    Cc: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
    Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    fs/proc/task_mmu.c | 2 +-
    1 file changed, 1 insertion(+), 1 deletion(-)

    --- a/fs/proc/task_mmu.c
    +++ b/fs/proc/task_mmu.c
    @@ -784,7 +784,7 @@ static int pagemap_pte_range(pmd_t *pmd,

    /* find the first VMA at or above 'addr' */
    vma = find_vma(walk->mm, addr);
    - if (pmd_trans_huge_lock(pmd, vma) == 1) {
    + if (vma && pmd_trans_huge_lock(pmd, vma) == 1) {
    for (; addr != end; addr += PAGE_SIZE) {
    unsigned long offset;




    \
     
     \ /
      Last update: 2012-06-07 07:02    [W:2.596 / U:1.972 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site