• Greg Ungerer's avatar
    m68k: fix "bad page state" oops on ColdFire boot · ecd60532
    Greg Ungerer authored
    Booting a ColdFire m68k core with MMU enabled causes a "bad page state"
    oops since commit 1d40a5ea ("mm: mark pages in use for page tables"):
    
     BUG: Bad page state in process sh  pfn:01ce2
     page:004fefc8 count:0 mapcount:-1024 mapping:00000000 index:0x0
     flags: 0x0()
     raw: 00000000 00000000 00000000 fffffbff 00000000 00000100 00000200 00000000
     raw: 039c4000
     page dumped because: nonzero mapcount
     Modules linked in:
     CPU: 0 PID: 22 Comm: sh Not tainted 4.17.0-07461-g1d40a5ea #13
    
    Fix by calling pgtable_page_dtor() in our __pte_free_tlb() code path,
    so that the PG_table flag is cleared before we free the pte page.
    
    Note that I had to change the type of pte_free() to be static from
    extern. Otherwise you get a lot of warnings like this:
    
    ./arch/m68k/include/asm/mcf_pgalloc.h:80:2: warning: ‘pgtable_page_dtor’ is static but used in inline function ‘pte_free’ which is not static
      pgtable_page_dtor(page);
      ^
    
    And making it static is consistent with our use of this in the other
    m68k pgalloc definitions of pte_free().
    Signed-off-by: default avatarGreg Ungerer <gerg@linux-m68k.org>
    CC: Matthew Wilcox <willy@infradead.org>
    Reviewed-by: default avatarGeert Uytterhoeven <geert@linux-m68k.org>
    ecd60532
Name
Last commit
Last update
..
68000 Loading commit data...
amiga Loading commit data...
apollo Loading commit data...
atari Loading commit data...
bvme6000 Loading commit data...
coldfire Loading commit data...
configs Loading commit data...
emu Loading commit data...
fpsp040 Loading commit data...
hp300 Loading commit data...
ifpsp060 Loading commit data...
include Loading commit data...
kernel Loading commit data...
lib Loading commit data...
mac Loading commit data...
math-emu Loading commit data...
mm Loading commit data...
mvme147 Loading commit data...
mvme16x Loading commit data...
q40 Loading commit data...
sun3 Loading commit data...
sun3x Loading commit data...
tools/amiga Loading commit data...
Kconfig Loading commit data...
Kconfig.bus Loading commit data...
Kconfig.cpu Loading commit data...
Kconfig.debug Loading commit data...
Kconfig.devices Loading commit data...
Kconfig.machine Loading commit data...
Makefile Loading commit data...
install.sh Loading commit data...