[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20170425161822.18764-1-naveen.n.rao@linux.vnet.ibm.com>
Date: Tue, 25 Apr 2017 21:48:22 +0530
From: "Naveen N. Rao" <naveen.n.rao@...ux.vnet.ibm.com>
To: Michael Ellerman <mpe@...erman.id.au>
Cc: Masami Hiramatsu <mhiramat@...nel.org>,
Paul Clarke <pc@...ibm.com>,
David Laight <David.Laight@...LAB.COM>,
linux-kernel@...r.kernel.org, linuxppc-dev@...ts.ozlabs.org
Subject: [PATCH] kallsyms: optimize kallsyms_lookup_name() for a few cases
1. Fail early for invalid/zero length symbols.
2. Detect names of the form <mod:name> and skip checking for kernel
symbols in that case.
Signed-off-by: Naveen N. Rao <naveen.n.rao@...ux.vnet.ibm.com>
---
Masami, Michael,
I have added two very simple checks here, which I felt is good to have,
rather than the elaborate checks in the previous version. Given the
change in module code to use strnchr(), the checks are now safe and
further tests are not probably not that useful.
- Naveen
kernel/kallsyms.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/kernel/kallsyms.c b/kernel/kallsyms.c
index 6a3b249a2ae1..d134b060564f 100644
--- a/kernel/kallsyms.c
+++ b/kernel/kallsyms.c
@@ -205,6 +205,12 @@ unsigned long kallsyms_lookup_name(const char *name)
unsigned long i;
unsigned int off;
+ if (!name || *name == '\0')
+ return false;
+
+ if (strnchr(name, MODULE_NAME_LEN, ':'))
+ return module_kallsyms_lookup_name(name);
+
for (i = 0, off = 0; i < kallsyms_num_syms; i++) {
off = kallsyms_expand_symbol(off, namebuf, ARRAY_SIZE(namebuf));
--
2.12.1
Powered by blists - more mailing lists