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.15 282/846] lib/logic_iomem: Fix operation on 32-bit
    Date
    From: Johannes Berg <johannes.berg@intel.com>

    [ Upstream commit 4e8a5edac5010820e7c5303fc96f5a262e096bb6 ]

    On 32-bit, the first entry might be at 0/NULL, but that's
    strange and leads to issues, e.g. where we check "if (ret)".
    Use a IOREMAP_BIAS/IOREMAP_MASK of 0x80000000UL to avoid
    this. This then requires reducing the number of areas (via
    MAX_AREAS), but we still have 128 areas, which is enough.

    Fixes: ca2e334232b6 ("lib: add iomem emulation (logic_iomem)")
    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 | 6 +++---
    1 file changed, 3 insertions(+), 3 deletions(-)

    diff --git a/lib/logic_iomem.c b/lib/logic_iomem.c
    index 54fa601f3300b..549b22d4bcde1 100644
    --- a/lib/logic_iomem.c
    +++ b/lib/logic_iomem.c
    @@ -21,15 +21,15 @@ struct logic_iomem_area {

    #define AREA_SHIFT 24
    #define MAX_AREA_SIZE (1 << AREA_SHIFT)
    -#define MAX_AREAS ((1ULL<<32) / MAX_AREA_SIZE)
    +#define MAX_AREAS ((1U << 31) / MAX_AREA_SIZE)
    #define AREA_BITS ((MAX_AREAS - 1) << AREA_SHIFT)
    #define AREA_MASK (MAX_AREA_SIZE - 1)
    #ifdef CONFIG_64BIT
    #define IOREMAP_BIAS 0xDEAD000000000000UL
    #define IOREMAP_MASK 0xFFFFFFFF00000000UL
    #else
    -#define IOREMAP_BIAS 0
    -#define IOREMAP_MASK 0
    +#define IOREMAP_BIAS 0x80000000UL
    +#define IOREMAP_MASK 0x80000000UL
    #endif

    static DEFINE_MUTEX(regions_mtx);
    --
    2.34.1


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