This commit was manufactured by cvs2svn to create tag
[linux-2.6.git] / kernel / kallsyms.c
index bf19d12..d0db188 100644 (file)
@@ -40,14 +40,14 @@ static inline int is_kernel_text(unsigned long addr)
 /* Lookup the address for this symbol. Returns 0 if not found. */
 unsigned long kallsyms_lookup_name(const char *name)
 {
-       char namebuf[KSYM_NAME_LEN+1];
+       char namebuf[128];
        unsigned long i;
        char *knames;
 
        for (i = 0, knames = kallsyms_names; i < kallsyms_num_syms; i++) {
                unsigned prefix = *knames++;
 
-               strlcpy(namebuf + prefix, knames, KSYM_NAME_LEN - prefix);
+               strlcpy(namebuf + prefix, knames, 127 - prefix);
                if (strcmp(namebuf, name) == 0)
                        return kallsyms_addresses[i];
 
@@ -67,7 +67,7 @@ const char *kallsyms_lookup(unsigned long addr,
        /* This kernel should never had been booted. */
        BUG_ON(!kallsyms_addresses);
 
-       namebuf[KSYM_NAME_LEN] = 0;
+       namebuf[127] = 0;
        namebuf[0] = 0;
 
        if (is_kernel_text(addr) || is_kernel_inittext(addr)) {
@@ -84,7 +84,7 @@ const char *kallsyms_lookup(unsigned long addr,
                /* Grab name */
                for (i = 0; i <= best; i++) { 
                        unsigned prefix = *name++;
-                       strncpy(namebuf + prefix, name, KSYM_NAME_LEN - prefix);
+                       strncpy(namebuf + prefix, name, 127 - prefix);
                        name += strlen(name) + 1;
                }
 
@@ -117,22 +117,34 @@ void __print_symbol(const char *fmt, unsigned long address)
        char *modname;
        const char *name;
        unsigned long offset, size;
-       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];
+       char namebuf[128];
 
        name = kallsyms_lookup(address, &size, &offset, &modname, namebuf);
 
-       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);
+       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);
        }
-       printk(fmt, buffer);
 }
 
 /* To avoid O(n^2) iteration, we carry prefix along. */
@@ -143,7 +155,7 @@ struct kallsym_iter
        unsigned long value;
        unsigned int nameoff; /* If iterating in core kernel symbols */
        char type;
-       char name[KSYM_NAME_LEN+1];
+       char name[128];
 };
 
 /* Only label it "global" if it is exported. */
@@ -174,8 +186,7 @@ static unsigned long get_ksymbol_core(struct kallsym_iter *iter)
           shared with previous name (stem compression). */
        stemlen = kallsyms_names[off++];
 
-       strlcpy(iter->name+stemlen, kallsyms_names + off,
-               KSYM_NAME_LEN+1-stemlen);
+       strlcpy(iter->name+stemlen, kallsyms_names + off, 128-stemlen);
        off += strlen(kallsyms_names + off) + 1;
        iter->owner = NULL;
        iter->value = kallsyms_addresses[iter->pos];