2021-07-30 07:08:14

by Kefeng Wang

[permalink] [raw]
Subject: Re: [PATCH v2] lib: Use PFN_PHYS() in devmem_is_allowed()


On 2021/7/30 14:49, Liang Wang wrote:
> The physical address may exceed 32 bits on ARM(when ARM_LPAE enabled),
> use PFN_PHYS() in devmem_is_allowed(), or the physical address may
> overflow and be truncated.
>
> This bug was initially introduced from v2.6.37, and the function was moved
> to lib when v5.10.
>
> Fixes: 087aaffcdf9c ("ARM: implement CONFIG_STRICT_DEVMEM by disabling access to RAM via /dev/mem")
> Fixes: 527701eda5f1 ("lib: Add a generic version of devmem_is_allowed()")
> Cc: [email protected] # v2.6.37
> Signed-off-by: Liang Wang <[email protected]>
Reviewed-by: Kefeng Wang <[email protected]>
> ---
> v2: update subject and changelog
> lib/devmem_is_allowed.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/lib/devmem_is_allowed.c b/lib/devmem_is_allowed.c
> index c0d67c541849..60be9e24bd57 100644
> --- a/lib/devmem_is_allowed.c
> +++ b/lib/devmem_is_allowed.c
> @@ -19,7 +19,7 @@
> */
> int devmem_is_allowed(unsigned long pfn)
> {
> - if (iomem_is_exclusive(pfn << PAGE_SHIFT))
> + if (iomem_is_exclusive(PFN_PHYS(pfn)))
> return 0;
> if (!page_is_ram(pfn))
> return 1;


2021-08-04 01:35:55

by Palmer Dabbelt

[permalink] [raw]
Subject: Re: [PATCH v2] lib: Use PFN_PHYS() in devmem_is_allowed()

On Fri, 30 Jul 2021 00:04:05 PDT (-0700), [email protected] wrote:
>
> On 2021/7/30 14:49, Liang Wang wrote:
>> The physical address may exceed 32 bits on ARM(when ARM_LPAE enabled),
>> use PFN_PHYS() in devmem_is_allowed(), or the physical address may
>> overflow and be truncated.
>>
>> This bug was initially introduced from v2.6.37, and the function was moved
>> to lib when v5.10.
>>
>> Fixes: 087aaffcdf9c ("ARM: implement CONFIG_STRICT_DEVMEM by disabling access to RAM via /dev/mem")
>> Fixes: 527701eda5f1 ("lib: Add a generic version of devmem_is_allowed()")
>> Cc: [email protected] # v2.6.37
>> Signed-off-by: Liang Wang <[email protected]>
> Reviewed-by: Kefeng Wang <[email protected]>
>> ---
>> v2: update subject and changelog
>> lib/devmem_is_allowed.c | 2 +-
>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/lib/devmem_is_allowed.c b/lib/devmem_is_allowed.c
>> index c0d67c541849..60be9e24bd57 100644
>> --- a/lib/devmem_is_allowed.c
>> +++ b/lib/devmem_is_allowed.c
>> @@ -19,7 +19,7 @@
>> */
>> int devmem_is_allowed(unsigned long pfn)
>> {
>> - if (iomem_is_exclusive(pfn << PAGE_SHIFT))
>> + if (iomem_is_exclusive(PFN_PHYS(pfn)))
>> return 0;
>> if (!page_is_ram(pfn))
>> return 1;

Acked-by: Palmer Dabbelt <[email protected]>

I only see the reply so I'm assuming this is going in through some other
tree, but LMK if you want it via the RISC-V tree as IIRC we're using it
too.

Thanks!

2021-08-04 06:09:15

by Kefeng Wang

[permalink] [raw]
Subject: Re: [PATCH v2] lib: Use PFN_PHYS() in devmem_is_allowed()


On 2021/8/4 8:20, Palmer Dabbelt wrote:
> On Fri, 30 Jul 2021 00:04:05 PDT (-0700), [email protected]
> wrote:
>>
>> On 2021/7/30 14:49, Liang Wang wrote:
>>> The physical address may exceed 32 bits on ARM(when ARM_LPAE enabled),
>>> use PFN_PHYS() in devmem_is_allowed(), or the physical address may
>>> overflow and be truncated.
>>>
>>> This bug was initially introduced from v2.6.37, and the function was
>>> moved
>>> to lib when v5.10.
>>>
>>> Fixes: 087aaffcdf9c ("ARM: implement CONFIG_STRICT_DEVMEM by
>>> disabling access to RAM via /dev/mem")
>>> Fixes: 527701eda5f1 ("lib: Add a generic version of
>>> devmem_is_allowed()")
>>> Cc: [email protected] # v2.6.37
>>> Signed-off-by: Liang Wang <[email protected]>
>> Reviewed-by: Kefeng Wang <[email protected]>
>>> ---
>>> v2: update subject and changelog
>>>   lib/devmem_is_allowed.c | 2 +-
>>>   1 file changed, 1 insertion(+), 1 deletion(-)
...
> Acked-by: Palmer Dabbelt <[email protected]>
>
> I only see the reply so I'm assuming this is going in through some
> other tree, but LMK if you want it via the RISC-V tree as IIRC we're
> using it too.

Hi Palmer,  there is a v3 with changelog updated,

https://lore.kernel.org/lkml/[email protected]/


>
> Thanks!
> .
>