All of lore.kernel.org
 help / color / mirror / Atom feed
From: Arnd Bergmann <arnd@arndb.de>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: Arnd Bergmann <arnd@arndb.de>,
	Kostenzer Felix <fkostenzer@live.at>,
	linux-kernel@vger.kernel.org
Subject: [PATCH] lib: move sort self-test into a separate file
Date: Thu, 12 Jan 2017 12:05:52 +0100	[thread overview]
Message-ID: <20170112110657.3123790-1-arnd@arndb.de> (raw)

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.

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

             reply	other threads:[~2017-01-12 11:07 UTC|newest]

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

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=20170112110657.3123790-1-arnd@arndb.de \
    --to=arnd@arndb.de \
    --cc=akpm@linux-foundation.org \
    --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.