/* Lookup the address for this symbol. Returns 0 if not found. */
unsigned long kallsyms_lookup_name(const char *name)
{
- char namebuf[128];
+ char namebuf[KSYM_NAME_LEN+1];
unsigned long i;
char *knames;
for (i = 0, knames = kallsyms_names; i < kallsyms_num_syms; i++) {
unsigned prefix = *knames++;
- strlcpy(namebuf + prefix, knames, 127 - prefix);
+ strlcpy(namebuf + prefix, knames, KSYM_NAME_LEN - prefix);
if (strcmp(namebuf, name) == 0)
return kallsyms_addresses[i];
/* This kernel should never had been booted. */
BUG_ON(!kallsyms_addresses);
- namebuf[127] = 0;
+ namebuf[KSYM_NAME_LEN] = 0;
namebuf[0] = 0;
if (is_kernel_text(addr) || is_kernel_inittext(addr)) {
/* Grab name */
for (i = 0; i <= best; i++) {
unsigned prefix = *name++;
- strncpy(namebuf + prefix, name, 127 - prefix);
+ strncpy(namebuf + prefix, name, KSYM_NAME_LEN - prefix);
name += strlen(name) + 1;
}
char *modname;
const char *name;
unsigned long offset, size;
- char namebuf[128];
+ char namebuf[KSYM_NAME_LEN+1];
+ char buffer[sizeof("%s+%#lx/%#lx [%s]") + KSYM_NAME_LEN +
+ 2*(BITS_PER_LONG*3/10) + MODULE_NAME_LEN + 1];
name = kallsyms_lookup(address, &size, &offset, &modname, namebuf);
- if (!name) {
- char addrstr[sizeof("0x%lx") + (BITS_PER_LONG*3/10)];
-
- sprintf(addrstr, "0x%lx", address);
- printk(fmt, addrstr);
- return;
- }
-
- if (modname) {
- /* This is pretty small. */
- char buffer[sizeof("%s+%#lx/%#lx [%s]")
- + strlen(name) + 2*(BITS_PER_LONG*3/10)
- + strlen(modname)];
-
- sprintf(buffer, "%s+%#lx/%#lx [%s]",
- name, offset, size, modname);
- printk(fmt, buffer);
- } else {
- char buffer[sizeof("%s+%#lx/%#lx")
- + strlen(name) + 2*(BITS_PER_LONG*3/10)];
-
- sprintf(buffer, "%s+%#lx/%#lx", name, offset, size);
- printk(fmt, buffer);
+ if (!name)
+ sprintf(buffer, "0x%lx", address);
+ else {
+ if (modname)
+ sprintf(buffer, "%s+%#lx/%#lx [%s]", name, offset,
+ size, modname);
+ else
+ sprintf(buffer, "%s+%#lx/%#lx", name, offset, size);
}
+ printk(fmt, buffer);
}
/* To avoid O(n^2) iteration, we carry prefix along. */
unsigned long value;
unsigned int nameoff; /* If iterating in core kernel symbols */
char type;
- char name[128];
+ char name[KSYM_NAME_LEN+1];
};
/* Only label it "global" if it is exported. */
shared with previous name (stem compression). */
stemlen = kallsyms_names[off++];
- strlcpy(iter->name+stemlen, kallsyms_names + off, 128-stemlen);
+ strlcpy(iter->name+stemlen, kallsyms_names + off,
+ KSYM_NAME_LEN+1-stemlen);
off += strlen(kallsyms_names + off) + 1;
iter->owner = NULL;
iter->value = kallsyms_addresses[iter->pos];
}
__initcall(kallsyms_init);
-EXPORT_SYMBOL(kallsyms_lookup);
EXPORT_SYMBOL(__print_symbol);