[PATCH] ARM: Remove address checking for MMUless devices
Yanjun Yang
yangyj.ee at gmail.com
Wed Jun 12 00:01:28 PDT 2024
On Wed, Jun 12, 2024 at 2:43 PM Ard Biesheuvel <ardb at kernel.org> wrote:
>
> On Wed, 12 Jun 2024 at 03:26, Yanjun Yang <yangyj.ee at gmail.com> wrote:
> >
> > Hi,
> > Apologies for not CCing the relevant maintainers in my previous email.
> >
> > On Tue, Jun 11, 2024 at 6:09 PM Yanjun Yang <yangyj.ee at gmail.com> wrote:
> > >
> > > Commit 169f9102f9198b ("ARM: 9350/1: fault:
> > > Implement copy_from_kernel_nofault_allowed()") added the function to check
> > > address before use. However, for devices without MMU, addr > TASK_SIZE
> > > will always fail.
>
> Is that true? Doesn't it depend on the physical memory layout of the
> platform in question?
>
I only checked the ARM architecture, in arch/arm/include/asm/memory.h
TASK_SIZE is
defined as 0xffffffff when CONFIG_MMU is not defined. Following is
the code snippet.
/*
* The limitation of user task size can grow up to the end of free ram region.
* It is difficult to define and perhaps will never meet the original meaning
* of this define that was meant to.
* Fortunately, there is no reference for this in noMMU mode, for now.
*/
#define TASK_SIZE UL(0xffffffff)
> > This patch move this function after the #ifdef
> > > CONFIG_MMU statement.
> > >
> > > Also reported at https://bugzilla.kernel.org/show_bug.cgi?id=218953
> > >
> > > Signed-off-by: Yanjun Yang <yangyj.ee at gmail.com>
>
> Acked-by: Ard Biesheuvel <ardb at kernel.org>
>
> > > ---
> > > arch/arm/mm/fault.c | 4 ++--
> > > 1 file changed, 2 insertions(+), 2 deletions(-)
> > >
> > > diff --git a/arch/arm/mm/fault.c b/arch/arm/mm/fault.c
> > > index 67c425341a95..ab01b51de559 100644
> > > --- a/arch/arm/mm/fault.c
> > > +++ b/arch/arm/mm/fault.c
> > > @@ -25,6 +25,8 @@
> > >
> > > #include "fault.h"
> > >
> > > +#ifdef CONFIG_MMU
> > > +
> > > bool copy_from_kernel_nofault_allowed(const void *unsafe_src, size_t size)
> > > {
> > > unsigned long addr = (unsigned long)unsafe_src;
> > > @@ -32,8 +34,6 @@ bool copy_from_kernel_nofault_allowed(const void *unsafe_src, size_t size)
> > > return addr >= TASK_SIZE && ULONG_MAX - addr >= size;
> > > }
> > >
> > > -#ifdef CONFIG_MMU
> > > -
> > > /*
> > > * This is useful to dump out the page tables associated with
> > > * 'addr' in mm 'mm'.
> > > --
> > > 2.45.2
> > >
More information about the linux-arm-kernel
mailing list