lkml.org 
[lkml]   [2022]   [Jan]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.16 0339/1039] lib/logic_iomem: Fix 32-bit build
    Date
    From: Johannes Berg <johannes.berg@intel.com>

    [ Upstream commit 4e84139e14af5ea60772cc4f33d7059aec76e0eb ]

    On a 32-bit build, the (unsigned long long) casts throw warnings
    (or errors) due to being to a different integer size. Cast to
    uintptr_t first (with the __force for sparse) and then further
    to get the consistent print on 32 and 64-bit.

    Fixes: ca2e334232b6 ("lib: add iomem emulation (logic_iomem)")
    Reported-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Richard Weinberger <richard@nod.at>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    lib/logic_iomem.c | 13 +++++++------
    1 file changed, 7 insertions(+), 6 deletions(-)

    diff --git a/lib/logic_iomem.c b/lib/logic_iomem.c
    index 9bdfde0c0f86d..54fa601f3300b 100644
    --- a/lib/logic_iomem.c
    +++ b/lib/logic_iomem.c
    @@ -79,7 +79,7 @@ static void __iomem *real_ioremap(phys_addr_t offset, size_t size)
    static void real_iounmap(void __iomem *addr)
    {
    WARN(1, "invalid iounmap for addr 0x%llx\n",
    - (unsigned long long __force)addr);
    + (unsigned long long)(uintptr_t __force)addr);
    }
    #endif /* CONFIG_LOGIC_IOMEM_FALLBACK */

    @@ -173,7 +173,7 @@ EXPORT_SYMBOL(iounmap);
    static u##sz real_raw_read ## op(const volatile void __iomem *addr) \
    { \
    WARN(1, "Invalid read" #op " at address %llx\n", \
    - (unsigned long long __force)addr); \
    + (unsigned long long)(uintptr_t __force)addr); \
    return (u ## sz)~0ULL; \
    } \
    \
    @@ -181,7 +181,8 @@ static void real_raw_write ## op(u ## sz val, \
    volatile void __iomem *addr) \
    { \
    WARN(1, "Invalid writeq" #op " of 0x%llx at address %llx\n", \
    - (unsigned long long)val, (unsigned long long __force)addr);\
    + (unsigned long long)val, \
    + (unsigned long long)(uintptr_t __force)addr);\
    } \

    MAKE_FALLBACK(b, 8);
    @@ -194,14 +195,14 @@ MAKE_FALLBACK(q, 64);
    static void real_memset_io(volatile void __iomem *addr, int value, size_t size)
    {
    WARN(1, "Invalid memset_io at address 0x%llx\n",
    - (unsigned long long __force)addr);
    + (unsigned long long)(uintptr_t __force)addr);
    }

    static void real_memcpy_fromio(void *buffer, const volatile void __iomem *addr,
    size_t size)
    {
    WARN(1, "Invalid memcpy_fromio at address 0x%llx\n",
    - (unsigned long long __force)addr);
    + (unsigned long long)(uintptr_t __force)addr);

    memset(buffer, 0xff, size);
    }
    @@ -210,7 +211,7 @@ static void real_memcpy_toio(volatile void __iomem *addr, const void *buffer,
    size_t size)
    {
    WARN(1, "Invalid memcpy_toio at address 0x%llx\n",
    - (unsigned long long __force)addr);
    + (unsigned long long)(uintptr_t __force)addr);
    }
    #endif /* CONFIG_LOGIC_IOMEM_FALLBACK */

    --
    2.34.1


    \
     
     \ /
      Last update: 2022-01-25 00:11    [W:4.026 / U:0.160 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site