lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Date:   Mon,  5 Dec 2022 16:30:17 +0800
From:   Song Chen <chensong_2000@....cn>
To:     rostedt@...dmis.org, mhiramat@...nel.org, arnd@...db.de
Cc:     linux-kernel@...r.kernel.org, linux-trace-kernel@...r.kernel.org,
        linux-arch@...r.kernel.org, Song Chen <chensong_2000@....cn>
Subject: [PATCH v3 4/4] kernel/trace: remove calling regs_* when compiling HEXAGON

kernel test robot reports below errors:

In file included from kernel/trace/trace_events_synth.c:22:
>> kernel/trace/trace_probe_kernel.h:203:9: error: call to
undeclared function 'regs_get_register'; ISO C99 and later
do not support implicit function declarations
[-Wimplicit-function-declaration]
                   val = regs_get_register(regs, code->param);

HEXAGON doesn't define and implement those reg_* functions
underneath arch/hexagon as well as other archs. To remove
those errors, i have to include those function calls in
"CONFIG_HEXAGON"

It looks ugly, but i don't know any other way to fix it,
this patch can be reverted after reg_* have been in place
in arch/hexagon.

Signed-off-by: Song Chen <chensong_2000@....cn>
Reported-by: kernel test robot <lkp@...el.com>
---
 kernel/trace/trace_probe_kernel.h | 21 +++++++++++++++++++--
 1 file changed, 19 insertions(+), 2 deletions(-)

diff --git a/kernel/trace/trace_probe_kernel.h b/kernel/trace/trace_probe_kernel.h
index 8c42abe0dacf..7e958b7f07e5 100644
--- a/kernel/trace/trace_probe_kernel.h
+++ b/kernel/trace/trace_probe_kernel.h
@@ -130,8 +130,7 @@ probe_mem_read(void *dest, void *src, size_t size)
 	return copy_from_kernel_nofault(dest, src, size);
 }
 
-static nokprobe_inline unsigned long
-get_event_field(struct fetch_insn *code, void *rec)
+static unsigned long get_event_field(struct fetch_insn *code, void *rec)
 {
 	struct ftrace_event_field *field = code->data;
 	unsigned long val;
@@ -194,23 +193,41 @@ static int
 process_fetch_insn(struct fetch_insn *code, void *rec, void *dest,
 		   void *base)
 {
+#ifndef CONFIG_HEXAGON
 	struct pt_regs *regs = rec;
+#endif
 	unsigned long val;
 
 retry:
 	/* 1st stage: get value from context */
 	switch (code->op) {
 	case FETCH_OP_REG:
+#ifdef CONFIG_HEXAGON
+		val = 0;
+#else
 		val = regs_get_register(regs, code->param);
+#endif
 		break;
 	case FETCH_OP_STACK:
+#ifdef CONFIG_HEXAGON
+		val = 0;
+#else
 		val = regs_get_kernel_stack_nth(regs, code->param);
+#endif
 		break;
 	case FETCH_OP_STACKP:
+#ifdef CONFIG_HEXAGON
+		val = 0;
+#else
 		val = kernel_stack_pointer(regs);
+#endif
 		break;
 	case FETCH_OP_RETVAL:
+#ifdef CONFIG_HEXAGON
+		val = 0;
+#else
 		val = regs_return_value(regs);
+#endif
 		break;
 	case FETCH_OP_IMM:
 		val = code->immediate;
-- 
2.25.1

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ