Re: [PATCH 6.10 032/375] selftests: mm: fix build errors on armhf

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Sep 10, 2024 at 8:44 AM Liam R. Howlett <Liam.Howlett@xxxxxxxxxx> wrote:
>
> * Jeff Xu <jeffxu@xxxxxxxxxxxx> [240910 10:23]:
> > Hi
> >
> > I'm not sure this is a correct fix.
>
> This should be backported, mainly to help facilitate future backports.
>
> ...
>
> > Although, I don't think we need to block this  getting into 6.10, we
> > can backport  again when a future fix is available.
>
> Please move this discussion to the mm mailing list.
>
> Any changes to the area will depend on the stable and upstream kernel
> being in sync for easier backporting.  Without the fix, armhf will fail
> to build the selftest.  So our choices are to have a working selftest
> that helps backporting in the future or broken selftest on certain archs
> and potentially more work for the stable team.
>
I'm ok with applying this to 6.10 :-)
-Jeff

> Thanks,
> Liam
>
> >
> > Thanks
> > -Jeff
> >
> >
> > On Tue, Sep 10, 2024 at 2:42 AM Greg Kroah-Hartman
> > <gregkh@xxxxxxxxxxxxxxxxxxx> wrote:
> > >
> > > 6.10-stable review patch.  If anyone has any objections, please let me know.
> > >
> > > ------------------
> > >
> > > From: Muhammad Usama Anjum <usama.anjum@xxxxxxxxxxxxx>
> > >
> > > commit b808f629215685c1941b1cd567c7b7ccb3c90278 upstream.
> > >
> > > The __NR_mmap isn't found on armhf.  The mmap() is commonly available
> > > system call and its wrapper is present on all architectures.  So it should
> > > be used directly.  It solves problem for armhf and doesn't create problem
> > > for other architectures.
> > >
> > > Remove sys_mmap() functions as they aren't doing anything else other than
> > > calling mmap().  There is no need to set errno = 0 manually as glibc
> > > always resets it.
> > >
> > > For reference errors are as following:
> > >
> > >   CC       seal_elf
> > > seal_elf.c: In function 'sys_mmap':
> > > seal_elf.c:39:33: error: '__NR_mmap' undeclared (first use in this function)
> > >    39 |         sret = (void *) syscall(__NR_mmap, addr, len, prot,
> > >       |                                 ^~~~~~~~~
> > >
> > > mseal_test.c: In function 'sys_mmap':
> > > mseal_test.c:90:33: error: '__NR_mmap' undeclared (first use in this function)
> > >    90 |         sret = (void *) syscall(__NR_mmap, addr, len, prot,
> > >       |                                 ^~~~~~~~~
> > >
> > > Link: https://lkml.kernel.org/r/20240809082511.497266-1-usama.anjum@xxxxxxxxxxxxx
> > > Fixes: 4926c7a52de7 ("selftest mm/mseal memory sealing")
> > > Signed-off-by: Muhammad Usama Anjum <usama.anjum@xxxxxxxxxxxxx>
> > > Cc: Jeff Xu <jeffxu@xxxxxxxxxxxx>
> > > Cc: Kees Cook <kees@xxxxxxxxxx>
> > > Cc: Liam R. Howlett <Liam.Howlett@xxxxxxxxxx>
> > > Cc: Shuah Khan <shuah@xxxxxxxxxx>
> > > Cc: <stable@xxxxxxxxxxxxxxx>
> > > Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>
> > > Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx>
> > > ---
> > >  tools/testing/selftests/mm/mseal_test.c |   37 +++++++++++---------------------
> > >  tools/testing/selftests/mm/seal_elf.c   |   13 -----------
> > >  2 files changed, 14 insertions(+), 36 deletions(-)
> > >
> > > --- a/tools/testing/selftests/mm/mseal_test.c
> > > +++ b/tools/testing/selftests/mm/mseal_test.c
> > > @@ -128,17 +128,6 @@ static int sys_mprotect_pkey(void *ptr,
> > >         return sret;
> > >  }
> > >
> > > -static void *sys_mmap(void *addr, unsigned long len, unsigned long prot,
> > > -       unsigned long flags, unsigned long fd, unsigned long offset)
> > > -{
> > > -       void *sret;
> > > -
> > > -       errno = 0;
> > > -       sret = (void *) syscall(__NR_mmap, addr, len, prot,
> > > -               flags, fd, offset);
> > > -       return sret;
> > > -}
> > > -
> > >  static int sys_munmap(void *ptr, size_t size)
> > >  {
> > >         int sret;
> > > @@ -219,7 +208,7 @@ static void setup_single_address(int siz
> > >  {
> > >         void *ptr;
> > >
> > > -       ptr = sys_mmap(NULL, size, PROT_READ, MAP_ANONYMOUS | MAP_PRIVATE, -1, 0);
> > > +       ptr = mmap(NULL, size, PROT_READ, MAP_ANONYMOUS | MAP_PRIVATE, -1, 0);
> > >         *ptrOut = ptr;
> > >  }
> > >
> > > @@ -228,7 +217,7 @@ static void setup_single_address_rw(int
> > >         void *ptr;
> > >         unsigned long mapflags = MAP_ANONYMOUS | MAP_PRIVATE;
> > >
> > > -       ptr = sys_mmap(NULL, size, PROT_READ | PROT_WRITE, mapflags, -1, 0);
> > > +       ptr = mmap(NULL, size, PROT_READ | PROT_WRITE, mapflags, -1, 0);
> > >         *ptrOut = ptr;
> > >  }
> > >
> > > @@ -252,7 +241,7 @@ bool seal_support(void)
> > >         void *ptr;
> > >         unsigned long page_size = getpagesize();
> > >
> > > -       ptr = sys_mmap(NULL, page_size, PROT_READ, MAP_ANONYMOUS | MAP_PRIVATE, -1, 0);
> > > +       ptr = mmap(NULL, page_size, PROT_READ, MAP_ANONYMOUS | MAP_PRIVATE, -1, 0);
> > >         if (ptr == (void *) -1)
> > >                 return false;
> > >
> > > @@ -528,8 +517,8 @@ static void test_seal_zero_address(void)
> > >         int prot;
> > >
> > >         /* use mmap to change protection. */
> > > -       ptr = sys_mmap(0, size, PROT_NONE,
> > > -                       MAP_ANONYMOUS | MAP_PRIVATE | MAP_FIXED, -1, 0);
> > > +       ptr = mmap(0, size, PROT_NONE,
> > > +                  MAP_ANONYMOUS | MAP_PRIVATE | MAP_FIXED, -1, 0);
> > >         FAIL_TEST_IF_FALSE(ptr == 0);
> > >
> > >         size = get_vma_size(ptr, &prot);
> > > @@ -1256,8 +1245,8 @@ static void test_seal_mmap_overwrite_pro
> > >         }
> > >
> > >         /* use mmap to change protection. */
> > > -       ret2 = sys_mmap(ptr, size, PROT_NONE,
> > > -                       MAP_ANONYMOUS | MAP_PRIVATE | MAP_FIXED, -1, 0);
> > > +       ret2 = mmap(ptr, size, PROT_NONE,
> > > +                   MAP_ANONYMOUS | MAP_PRIVATE | MAP_FIXED, -1, 0);
> > >         if (seal) {
> > >                 FAIL_TEST_IF_FALSE(ret2 == MAP_FAILED);
> > >                 FAIL_TEST_IF_FALSE(errno == EPERM);
> > > @@ -1287,8 +1276,8 @@ static void test_seal_mmap_expand(bool s
> > >         }
> > >
> > >         /* use mmap to expand. */
> > > -       ret2 = sys_mmap(ptr, size, PROT_READ,
> > > -                       MAP_ANONYMOUS | MAP_PRIVATE | MAP_FIXED, -1, 0);
> > > +       ret2 = mmap(ptr, size, PROT_READ,
> > > +                   MAP_ANONYMOUS | MAP_PRIVATE | MAP_FIXED, -1, 0);
> > >         if (seal) {
> > >                 FAIL_TEST_IF_FALSE(ret2 == MAP_FAILED);
> > >                 FAIL_TEST_IF_FALSE(errno == EPERM);
> > > @@ -1315,8 +1304,8 @@ static void test_seal_mmap_shrink(bool s
> > >         }
> > >
> > >         /* use mmap to shrink. */
> > > -       ret2 = sys_mmap(ptr, 8 * page_size, PROT_READ,
> > > -                       MAP_ANONYMOUS | MAP_PRIVATE | MAP_FIXED, -1, 0);
> > > +       ret2 = mmap(ptr, 8 * page_size, PROT_READ,
> > > +                   MAP_ANONYMOUS | MAP_PRIVATE | MAP_FIXED, -1, 0);
> > >         if (seal) {
> > >                 FAIL_TEST_IF_FALSE(ret2 == MAP_FAILED);
> > >                 FAIL_TEST_IF_FALSE(errno == EPERM);
> > > @@ -1697,7 +1686,7 @@ static void test_seal_discard_ro_anon_on
> > >         ret = fallocate(fd, 0, 0, size);
> > >         FAIL_TEST_IF_FALSE(!ret);
> > >
> > > -       ptr = sys_mmap(NULL, size, PROT_READ, mapflags, fd, 0);
> > > +       ptr = mmap(NULL, size, PROT_READ, mapflags, fd, 0);
> > >         FAIL_TEST_IF_FALSE(ptr != MAP_FAILED);
> > >
> > >         if (seal) {
> > > @@ -1727,7 +1716,7 @@ static void test_seal_discard_ro_anon_on
> > >         int ret;
> > >         unsigned long mapflags = MAP_ANONYMOUS | MAP_SHARED;
> > >
> > > -       ptr = sys_mmap(NULL, size, PROT_READ, mapflags, -1, 0);
> > > +       ptr = mmap(NULL, size, PROT_READ, mapflags, -1, 0);
> > >         FAIL_TEST_IF_FALSE(ptr != (void *)-1);
> > >
> > >         if (seal) {
> > > --- a/tools/testing/selftests/mm/seal_elf.c
> > > +++ b/tools/testing/selftests/mm/seal_elf.c
> > > @@ -61,17 +61,6 @@ static int sys_mseal(void *start, size_t
> > >         return sret;
> > >  }
> > >
> > > -static void *sys_mmap(void *addr, unsigned long len, unsigned long prot,
> > > -       unsigned long flags, unsigned long fd, unsigned long offset)
> > > -{
> > > -       void *sret;
> > > -
> > > -       errno = 0;
> > > -       sret = (void *) syscall(__NR_mmap, addr, len, prot,
> > > -               flags, fd, offset);
> > > -       return sret;
> > > -}
> > > -
> > >  static inline int sys_mprotect(void *ptr, size_t size, unsigned long prot)
> > >  {
> > >         int sret;
> > > @@ -87,7 +76,7 @@ static bool seal_support(void)
> > >         void *ptr;
> > >         unsigned long page_size = getpagesize();
> > >
> > > -       ptr = sys_mmap(NULL, page_size, PROT_READ, MAP_ANONYMOUS | MAP_PRIVATE, -1, 0);
> > > +       ptr = mmap(NULL, page_size, PROT_READ, MAP_ANONYMOUS | MAP_PRIVATE, -1, 0);
> > >         if (ptr == (void *) -1)
> > >                 return false;
> > >
> > >
> > >





[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux