lkml.org 
[lkml]   [2017]   [Feb]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Date
    Subject[PATCH 3.16 223/306] swapfile: fix memory corruption via malformed swapfile
    3.16.40-rc1 review patch.  If anyone has any objections, please let me know.

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

    From: Jann Horn <jann@thejh.net>

    commit dd111be69114cc867f8e826284559bfbc1c40e37 upstream.

    When root activates a swap partition whose header has the wrong
    endianness, nr_badpages elements of badpages are swabbed before
    nr_badpages has been checked, leading to a buffer overrun of up to 8GB.

    This normally is not a security issue because it can only be exploited
    by root (more specifically, a process with CAP_SYS_ADMIN or the ability
    to modify a swap file/partition), and such a process can already e.g.
    modify swapped-out memory of any other userspace process on the system.

    Link: http://lkml.kernel.org/r/1477949533-2509-1-git-send-email-jann@thejh.net
    Signed-off-by: Jann Horn <jann@thejh.net>
    Acked-by: Kees Cook <keescook@chromium.org>
    Acked-by: Jerome Marchand <jmarchan@redhat.com>
    Acked-by: Johannes Weiner <hannes@cmpxchg.org>
    Cc: "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>
    Cc: Vlastimil Babka <vbabka@suse.cz>
    Cc: Hugh Dickins <hughd@google.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
    ---
    mm/swapfile.c | 2 ++
    1 file changed, 2 insertions(+)

    --- a/mm/swapfile.c
    +++ b/mm/swapfile.c
    @@ -2185,6 +2185,8 @@ static unsigned long read_swap_header(st
    swab32s(&swap_header->info.version);
    swab32s(&swap_header->info.last_page);
    swab32s(&swap_header->info.nr_badpages);
    + if (swap_header->info.nr_badpages > MAX_SWAP_BADPAGES)
    + return 0;
    for (i = 0; i < swap_header->info.nr_badpages; i++)
    swab32s(&swap_header->info.badpages[i]);
    }
    \
     
     \ /
      Last update: 2017-02-16 01:14    [W:4.181 / U:0.036 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site