All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andy Shevchenko <andy.shevchenko@gmail.com>
To: Arnd Bergmann <arnd@arndb.de>
Cc: Andrew Morton <akpm@linux-foundation.org>,
	Kostenzer Felix <fkostenzer@live.at>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH] lib: move sort self-test into a separate file
Date: Mon, 16 Jan 2017 20:05:21 +0200	[thread overview]
Message-ID: <CAHp75VdG979oY3xJCwLtKzfpoe2M1dZF_OPCKz1QKNNgUKe1MQ@mail.gmail.com> (raw)
In-Reply-To: <20170112110657.3123790-1-arnd@arndb.de>

On Thu, Jan 12, 2017 at 1:05 PM, Arnd Bergmann <arnd@arndb.de> wrote:
> The lib/sort.c file gets included in the EFI stub for use outside
> of the kernel address space, which now fails due to the addition
> of a module_init() function:
>
> 00000000 R_ARM_ABS32       test_sort_init
> drivers/firmware/efi/libstub/lib-sort.stub.o: absolute symbol references not allowed in the EFI stub
> drivers/firmware/efi/libstub/Makefile:69: recipe for target 'drivers/firmware/efi/libstub/lib-sort.stub.o' failed
>
> Other library tests live in a separate file, so doing the same here
> is an easy way to avoid the problem.
>

FWIW:
Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>

> Fixes: akpm-current ("lib: add CONFIG_TEST_SORT to enable self-test of sort()")
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
> ---
>  lib/Makefile    |  1 +
>  lib/sort.c      | 44 --------------------------------------------
>  lib/test_sort.c | 43 +++++++++++++++++++++++++++++++++++++++++++
>  3 files changed, 44 insertions(+), 44 deletions(-)
>  create mode 100644 lib/test_sort.c
>
> diff --git a/lib/Makefile b/lib/Makefile
> index f5e72a728285..54d814a462da 100644
> --- a/lib/Makefile
> +++ b/lib/Makefile
> @@ -50,6 +50,7 @@ obj-$(CONFIG_TEST_KASAN) += test_kasan.o
>  obj-$(CONFIG_TEST_KSTRTOX) += test-kstrtox.o
>  obj-$(CONFIG_TEST_LKM) += test_module.o
>  obj-$(CONFIG_TEST_RHASHTABLE) += test_rhashtable.o
> +obj-$(CONFIG_TEST_SORT) += test_sort.o
>  obj-$(CONFIG_TEST_USER_COPY) += test_user_copy.o
>  obj-$(CONFIG_TEST_STATIC_KEYS) += test_static_keys.o
>  obj-$(CONFIG_TEST_STATIC_KEYS) += test_static_key_base.o
> diff --git a/lib/sort.c b/lib/sort.c
> index a9b156e7471b..975c6ef6fec7 100644
> --- a/lib/sort.c
> +++ b/lib/sort.c
> @@ -103,47 +103,3 @@ void sort(void *base, size_t num, size_t size,
>  }
>
>  EXPORT_SYMBOL(sort);
> -
> -#ifdef CONFIG_TEST_SORT
> -#include <linux/slab.h>
> -#include <linux/module.h>
> -/* a simple boot-time regression test */
> -
> -#define TEST_LEN 1000
> -
> -static int __init cmpint(const void *a, const void *b)
> -{
> -       return *(int *)a - *(int *)b;
> -}
> -
> -static int __init test_sort_init(void)
> -{
> -       int *a, i, r = 1, err = -ENOMEM;
> -
> -       a = kmalloc_array(TEST_LEN, sizeof(*a), GFP_KERNEL);
> -       if (!a)
> -               return err;
> -
> -       for (i = 0; i < TEST_LEN; i++) {
> -               r = (r * 725861) % 6599;
> -               a[i] = r;
> -       }
> -
> -       sort(a, TEST_LEN, sizeof(*a), cmpint, NULL);
> -
> -       err = -EINVAL;
> -       for (i = 0; i < TEST_LEN-1; i++)
> -               if (a[i] > a[i+1]) {
> -                       pr_err("test has failed\n");
> -                       goto exit;
> -               }
> -       err = 0;
> -       pr_info("test passed\n");
> -exit:
> -       kfree(a);
> -       return err;
> -}
> -
> -module_init(test_sort_init);
> -MODULE_LICENSE("GPL");
> -#endif
> diff --git a/lib/test_sort.c b/lib/test_sort.c
> new file mode 100644
> index 000000000000..d389c1cc2f6c
> --- /dev/null
> +++ b/lib/test_sort.c
> @@ -0,0 +1,43 @@
> +#include <linux/sort.h>
> +#include <linux/slab.h>
> +#include <linux/module.h>
> +
> +/* a simple boot-time regression test */
> +
> +#define TEST_LEN 1000
> +
> +static int __init cmpint(const void *a, const void *b)
> +{
> +       return *(int *)a - *(int *)b;
> +}
> +
> +static int __init test_sort_init(void)
> +{
> +       int *a, i, r = 1, err = -ENOMEM;
> +
> +       a = kmalloc_array(TEST_LEN, sizeof(*a), GFP_KERNEL);
> +       if (!a)
> +               return err;
> +
> +       for (i = 0; i < TEST_LEN; i++) {
> +               r = (r * 725861) % 6599;
> +               a[i] = r;
> +       }
> +
> +       sort(a, TEST_LEN, sizeof(*a), cmpint, NULL);
> +
> +       err = -EINVAL;
> +       for (i = 0; i < TEST_LEN-1; i++)
> +               if (a[i] > a[i+1]) {
> +                       pr_err("test has failed\n");
> +                       goto exit;
> +               }
> +       err = 0;
> +       pr_info("test passed\n");
> +exit:
> +       kfree(a);
> +       return err;
> +}
> +
> +module_init(test_sort_init);
> +MODULE_LICENSE("GPL");
> --
> 2.9.0
>



-- 
With Best Regards,
Andy Shevchenko

      reply	other threads:[~2017-01-16 18:06 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-01-12 11:05 [PATCH] lib: move sort self-test into a separate file Arnd Bergmann
2017-01-16 18:05 ` Andy Shevchenko [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CAHp75VdG979oY3xJCwLtKzfpoe2M1dZF_OPCKz1QKNNgUKe1MQ@mail.gmail.com \
    --to=andy.shevchenko@gmail.com \
    --cc=akpm@linux-foundation.org \
    --cc=arnd@arndb.de \
    --cc=fkostenzer@live.at \
    --cc=linux-kernel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.