lkml.org 
[lkml]   [2018]   [Apr]   [11]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.4 131/190] MIPS: mm: fixed mappings: correct initialisation
    Date
    4.4-stable review patch.  If anyone has any objections, please let me know.

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

    From: Marcin Nowakowski <marcin.nowakowski@imgtec.com>


    [ Upstream commit 71eb989ab5a110df8bcbb9609bacde73feacbedd ]

    fixrange_init operates at PMD-granularity and expects the addresses to
    be PMD-size aligned, but currently that might not be the case for
    PKMAP_BASE unless it is defined properly, so ensure a correct alignment
    is used before passing the address to fixrange_init.

    fixed mappings: only align the start address that is passed to
    fixrange_init rather than the value before adding the size, as we may
    end up with uninitialised upper part of the range.

    Signed-off-by: Marcin Nowakowski <marcin.nowakowski@imgtec.com>
    Cc: linux-mips@linux-mips.org
    Patchwork: https://patchwork.linux-mips.org/patch/15948/
    Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    arch/mips/mm/pgtable-32.c | 6 +++---
    1 file changed, 3 insertions(+), 3 deletions(-)

    --- a/arch/mips/mm/pgtable-32.c
    +++ b/arch/mips/mm/pgtable-32.c
    @@ -51,15 +51,15 @@ void __init pagetable_init(void)
    /*
    * Fixed mappings:
    */
    - vaddr = __fix_to_virt(__end_of_fixed_addresses - 1) & PMD_MASK;
    - fixrange_init(vaddr, vaddr + FIXADDR_SIZE, pgd_base);
    + vaddr = __fix_to_virt(__end_of_fixed_addresses - 1);
    + fixrange_init(vaddr & PMD_MASK, vaddr + FIXADDR_SIZE, pgd_base);

    #ifdef CONFIG_HIGHMEM
    /*
    * Permanent kmaps:
    */
    vaddr = PKMAP_BASE;
    - fixrange_init(vaddr, vaddr + PAGE_SIZE*LAST_PKMAP, pgd_base);
    + fixrange_init(vaddr & PMD_MASK, vaddr + PAGE_SIZE*LAST_PKMAP, pgd_base);

    pgd = swapper_pg_dir + __pgd_offset(vaddr);
    pud = pud_offset(pgd, vaddr);

    \
     
     \ /
      Last update: 2018-04-11 22:33    [W:2.501 / U:0.236 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site