lkml.org 
[lkml]   [2012]   [Aug]   [13]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[ 36/82] sh: Fix up recursive fault in oops with unset TTB.
    Date
    From: Greg KH <gregkh@linuxfoundation.org>

    3.5-stable review patch. If anyone has any objections, please let me know.

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

    From: Paul Mundt <lethal@linux-sh.org>

    commit 90eed7d87b748f9c0d11b9bad64a4c41e31b78c4 upstream.

    Presently the oops code looks for the pgd either from the mm context or
    the cached TTB value. There are presently cases where the TTB can be
    unset or otherwise cleared by hardware, which we weren't handling,
    resulting in recursive faults on the NULL pgd. In these cases we can
    simply reload from swapper_pg_dir and continue on as normal.

    Signed-off-by: Paul Mundt <lethal@linux-sh.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    arch/sh/mm/fault.c | 8 ++++++--
    1 file changed, 6 insertions(+), 2 deletions(-)

    --- a/arch/sh/mm/fault.c
    +++ b/arch/sh/mm/fault.c
    @@ -58,11 +58,15 @@ static void show_pte(struct mm_struct *m
    {
    pgd_t *pgd;

    - if (mm)
    + if (mm) {
    pgd = mm->pgd;
    - else
    + } else {
    pgd = get_TTB();

    + if (unlikely(!pgd))
    + pgd = swapper_pg_dir;
    + }
    +
    printk(KERN_ALERT "pgd = %p\n", pgd);
    pgd += pgd_index(addr);
    printk(KERN_ALERT "[%08lx] *pgd=%0*Lx", addr,



    \
     
     \ /
      Last update: 2012-08-13 23:22    [W:0.023 / U:1.492 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site