lkml.org 
[lkml]   [2018]   [Sep]   [3]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.18 087/123] s390/mm: fix addressing exception after suspend/resume
    Date
    4.18-stable review patch.  If anyone has any objections, please let me know.

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

    From: Gerald Schaefer <gerald.schaefer@de.ibm.com>

    commit 37a366face294facb9c9d9fdd9f5b64a27456cbd upstream.

    Commit c9b5ad546e7d "s390/mm: tag normal pages vs pages used in page tables"
    accidentally changed the logic in arch_set_page_states(), which is used by
    the suspend/resume code. set_page_stable(page, order) was changed to
    set_page_stable_dat(page, 0). After this, only the first page of higher order
    pages will be set to stable, and a write to one of the unstable pages will
    result in an addressing exception.

    Fix this by using "order" again, instead of "0".

    Fixes: c9b5ad546e7d ("s390/mm: tag normal pages vs pages used in page tables")
    Cc: stable@vger.kernel.org # 4.14+
    Reviewed-by: Heiko Carstens <heiko.carstens@de.ibm.com>
    Signed-off-by: Gerald Schaefer <gerald.schaefer@de.ibm.com>
    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    arch/s390/mm/page-states.c | 2 +-
    1 file changed, 1 insertion(+), 1 deletion(-)

    --- a/arch/s390/mm/page-states.c
    +++ b/arch/s390/mm/page-states.c
    @@ -271,7 +271,7 @@ void arch_set_page_states(int make_stabl
    list_for_each(l, &zone->free_area[order].free_list[t]) {
    page = list_entry(l, struct page, lru);
    if (make_stable)
    - set_page_stable_dat(page, 0);
    + set_page_stable_dat(page, order);
    else
    set_page_unused(page, order);
    }

    \
     
     \ /
      Last update: 2018-09-03 19:43    [W:4.289 / U:0.296 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site