mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2024-12-29 17:22:07 +00:00
4657a8a1c0
With ARCH=s390, make allmodconfig && make W=1 C=1 reports: WARNING: modpost: missing MODULE_DESCRIPTION() in arch/s390/lib/test_kprobes_s390.o WARNING: modpost: missing MODULE_DESCRIPTION() in arch/s390/lib/test_unwind.o WARNING: modpost: missing MODULE_DESCRIPTION() in arch/s390/lib/test_modules.o Add the missing invocations of the MODULE_DESCRIPTION() macro. Acked-by: Heiko Carstens <hca@linux.ibm.com> Signed-off-by: Jeff Johnson <quic_jjohnson@quicinc.com> Link: https://lore.kernel.org/r/20240615-md-s390-arch-s390-lib-v1-1-d7424b943973@quicinc.com Signed-off-by: Vasily Gorbik <gor@linux.ibm.com> Signed-off-by: Alexander Gordeev <agordeev@linux.ibm.com>
77 lines
1.8 KiB
C
77 lines
1.8 KiB
C
// SPDX-License-Identifier: GPL-2.0+
|
|
|
|
#include <linux/kernel.h>
|
|
#include <linux/kprobes.h>
|
|
#include <linux/random.h>
|
|
#include <kunit/test.h>
|
|
#include "test_kprobes.h"
|
|
|
|
static struct kprobe kp;
|
|
|
|
static void setup_kprobe(struct kunit *test, struct kprobe *kp,
|
|
const char *symbol, int offset)
|
|
{
|
|
kp->offset = offset;
|
|
kp->addr = NULL;
|
|
kp->symbol_name = symbol;
|
|
}
|
|
|
|
static void test_kprobe_offset(struct kunit *test, struct kprobe *kp,
|
|
const char *target, int offset)
|
|
{
|
|
int ret;
|
|
|
|
setup_kprobe(test, kp, target, 0);
|
|
ret = register_kprobe(kp);
|
|
if (!ret)
|
|
unregister_kprobe(kp);
|
|
KUNIT_EXPECT_EQ(test, 0, ret);
|
|
setup_kprobe(test, kp, target, offset);
|
|
ret = register_kprobe(kp);
|
|
KUNIT_EXPECT_EQ(test, -EINVAL, ret);
|
|
if (!ret)
|
|
unregister_kprobe(kp);
|
|
}
|
|
|
|
static void test_kprobe_odd(struct kunit *test)
|
|
{
|
|
test_kprobe_offset(test, &kp, "kprobes_target_odd",
|
|
kprobes_target_odd_offs);
|
|
}
|
|
|
|
static void test_kprobe_in_insn4(struct kunit *test)
|
|
{
|
|
test_kprobe_offset(test, &kp, "kprobes_target_in_insn4",
|
|
kprobes_target_in_insn4_offs);
|
|
}
|
|
|
|
static void test_kprobe_in_insn6_lo(struct kunit *test)
|
|
{
|
|
test_kprobe_offset(test, &kp, "kprobes_target_in_insn6_lo",
|
|
kprobes_target_in_insn6_lo_offs);
|
|
}
|
|
|
|
static void test_kprobe_in_insn6_hi(struct kunit *test)
|
|
{
|
|
test_kprobe_offset(test, &kp, "kprobes_target_in_insn6_hi",
|
|
kprobes_target_in_insn6_hi_offs);
|
|
}
|
|
|
|
static struct kunit_case kprobes_testcases[] = {
|
|
KUNIT_CASE(test_kprobe_odd),
|
|
KUNIT_CASE(test_kprobe_in_insn4),
|
|
KUNIT_CASE(test_kprobe_in_insn6_lo),
|
|
KUNIT_CASE(test_kprobe_in_insn6_hi),
|
|
{}
|
|
};
|
|
|
|
static struct kunit_suite kprobes_test_suite = {
|
|
.name = "kprobes_test_s390",
|
|
.test_cases = kprobes_testcases,
|
|
};
|
|
|
|
kunit_test_suites(&kprobes_test_suite);
|
|
|
|
MODULE_DESCRIPTION("KUnit tests for kprobes");
|
|
MODULE_LICENSE("GPL");
|