lkml.org 
[lkml]   [2019]   [Dec]   [11]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL 5.4 088/134] powerpc/fixmap: Use __fix_to_virt() instead of fix_to_virt()
    Date
    From: Christophe Leroy <christophe.leroy@c-s.fr>

    [ Upstream commit 77693a5fb57be4606a6024ec8e3076f9499b906b ]

    Modify back __set_fixmap() to using __fix_to_virt() instead
    of fix_to_virt() otherwise the following happens because it
    seems GCC doesn't see idx as a builtin const.

    CC mm/early_ioremap.o
    In file included from ./include/linux/kernel.h:11:0,
    from mm/early_ioremap.c:11:
    In function ‘fix_to_virt’,
    inlined from ‘__set_fixmap’ at ./arch/powerpc/include/asm/fixmap.h:87:2,
    inlined from ‘__early_ioremap’ at mm/early_ioremap.c:156:4:
    ./include/linux/compiler.h:350:38: error: call to ‘__compiletime_assert_32’ declared with attribute error: BUILD_BUG_ON failed: idx >= __end_of_fixed_addresses
    _compiletime_assert(condition, msg, __compiletime_assert_, __LINE__)
    ^
    ./include/linux/compiler.h:331:4: note: in definition of macro ‘__compiletime_assert’
    prefix ## suffix(); \
    ^
    ./include/linux/compiler.h:350:2: note: in expansion of macro ‘_compiletime_assert’
    _compiletime_assert(condition, msg, __compiletime_assert_, __LINE__)
    ^
    ./include/linux/build_bug.h:39:37: note: in expansion of macro ‘compiletime_assert’
    #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
    ^
    ./include/linux/build_bug.h:50:2: note: in expansion of macro ‘BUILD_BUG_ON_MSG’
    BUILD_BUG_ON_MSG(condition, "BUILD_BUG_ON failed: " #condition)
    ^
    ./include/asm-generic/fixmap.h:32:2: note: in expansion of macro ‘BUILD_BUG_ON’
    BUILD_BUG_ON(idx >= __end_of_fixed_addresses);
    ^

    Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
    Fixes: 4cfac2f9c7f1 ("powerpc/mm: Simplify __set_fixmap()")
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/f4984c615f90caa3277775a68849afeea846850d.1568295907.git.christophe.leroy@c-s.fr
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    arch/powerpc/include/asm/fixmap.h | 7 ++++++-
    1 file changed, 6 insertions(+), 1 deletion(-)

    diff --git a/arch/powerpc/include/asm/fixmap.h b/arch/powerpc/include/asm/fixmap.h
    index 0cfc365d814ba..722289a1d000e 100644
    --- a/arch/powerpc/include/asm/fixmap.h
    +++ b/arch/powerpc/include/asm/fixmap.h
    @@ -77,7 +77,12 @@ enum fixed_addresses {
    static inline void __set_fixmap(enum fixed_addresses idx,
    phys_addr_t phys, pgprot_t flags)
    {
    - map_kernel_page(fix_to_virt(idx), phys, flags);
    + if (__builtin_constant_p(idx))
    + BUILD_BUG_ON(idx >= __end_of_fixed_addresses);
    + else if (WARN_ON(idx >= __end_of_fixed_addresses))
    + return;
    +
    + map_kernel_page(__fix_to_virt(idx), phys, flags);
    }

    #endif /* !__ASSEMBLY__ */
    --
    2.20.1
    \
     
     \ /
      Last update: 2019-12-11 16:14    [W:2.651 / U:0.052 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site