lkml.org 
[lkml]   [2019]   [Feb]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL 4.20 12/42] csky: fixup compile error with pte_alloc
    Date
    From: Guo Ren <ren_guo@c-sky.com>

    [ Upstream commit 2a60aa14a9a0333b3eef58150bc1ef654f7321ef ]

    Commit: 4cf58924951e remove the address argument of pte_alloc without
    modify csky related code. linux-5.0-rc1 compile failed with csky.

    Remove the unnecessary address testing in pte_alloc().

    Signed-off-by: Guo Ren <ren_guo@c-sky.com>
    Cc: Joel Fernandes (Google) <joel@joelfernandes.org>
    Cc: Guenter Roeck <linux@roeck-us.net>
    Cc: Arnd Bergmann <arnd@arndb.de>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    arch/csky/include/asm/pgalloc.h | 43 ++++++++++++++-------------------
    1 file changed, 18 insertions(+), 25 deletions(-)

    diff --git a/arch/csky/include/asm/pgalloc.h b/arch/csky/include/asm/pgalloc.h
    index bf4f4a0e140e..d213bb47b717 100644
    --- a/arch/csky/include/asm/pgalloc.h
    +++ b/arch/csky/include/asm/pgalloc.h
    @@ -24,41 +24,34 @@ static inline void pmd_populate(struct mm_struct *mm, pmd_t *pmd,

    extern void pgd_init(unsigned long *p);

    -static inline pte_t *pte_alloc_one_kernel(struct mm_struct *mm,
    - unsigned long address)
    +static inline pte_t *pte_alloc_one_kernel(struct mm_struct *mm)
    {
    pte_t *pte;
    - unsigned long *kaddr, i;
    + unsigned long i;

    - pte = (pte_t *) __get_free_pages(GFP_KERNEL | __GFP_RETRY_MAYFAIL,
    - PTE_ORDER);
    - kaddr = (unsigned long *)pte;
    - if (address & 0x80000000)
    - for (i = 0; i < (PAGE_SIZE/4); i++)
    - *(kaddr + i) = 0x1;
    - else
    - clear_page(kaddr);
    + pte = (pte_t *) __get_free_page(GFP_KERNEL);
    + if (!pte)
    + return NULL;
    +
    + for (i = 0; i < PAGE_SIZE/sizeof(pte_t); i++)
    + (pte + i)->pte_low = _PAGE_GLOBAL;

    return pte;
    }

    -static inline struct page *pte_alloc_one(struct mm_struct *mm,
    - unsigned long address)
    +static inline struct page *pte_alloc_one(struct mm_struct *mm)
    {
    struct page *pte;
    - unsigned long *kaddr, i;
    -
    - pte = alloc_pages(GFP_KERNEL | __GFP_RETRY_MAYFAIL, PTE_ORDER);
    - if (pte) {
    - kaddr = kmap_atomic(pte);
    - if (address & 0x80000000) {
    - for (i = 0; i < (PAGE_SIZE/4); i++)
    - *(kaddr + i) = 0x1;
    - } else
    - clear_page(kaddr);
    - kunmap_atomic(kaddr);
    - pgtable_page_ctor(pte);
    +
    + pte = alloc_pages(GFP_KERNEL | __GFP_ZERO, 0);
    + if (!pte)
    + return NULL;
    +
    + if (!pgtable_page_ctor(pte)) {
    + __free_page(pte);
    + return NULL;
    }
    +
    return pte;
    }

    --
    2.19.1
    \
     
     \ /
      Last update: 2019-02-09 19:57    [W:3.356 / U:1.084 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site