#ifdef CONFIG_KALLSYMS
                /* Handle some frequent special cases.... */
                {
-                       char symname[KSYM_NAME_LEN+1];
+                       char symname[KSYM_NAME_LEN];
                        char *modname;
 
                        kallsyms_lookup(info->ip, NULL, NULL, &modname,
 
 static int proc_pid_wchan(struct task_struct *task, char *buffer)
 {
        unsigned long wchan;
-       char symname[KSYM_NAME_LEN+1];
+       char symname[KSYM_NAME_LEN];
 
        wchan = get_wchan(task);
 
 
                } else if (name[0] != '.')                              \
                        addr = *(kprobe_opcode_t **)addr;               \
        } else {                                                        \
-               char dot_name[KSYM_NAME_LEN+1];                         \
+               char dot_name[KSYM_NAME_LEN];                           \
                dot_name[0] = '.';                                      \
                dot_name[1] = '\0';                                     \
-               strncat(dot_name, name, KSYM_NAME_LEN);                 \
+               strncat(dot_name, name, KSYM_NAME_LEN - 2);             \
                addr = (kprobe_opcode_t *)kallsyms_lookup_name(dot_name); \
        }                                                               \
 }
 
 
 #include <linux/errno.h>
 
-#define KSYM_NAME_LEN 127
-#define KSYM_SYMBOL_LEN (sizeof("%s+%#lx/%#lx [%s]") + KSYM_NAME_LEN + \
-                        2*(BITS_PER_LONG*3/10) + MODULE_NAME_LEN + 1)
+#define KSYM_NAME_LEN 128
+#define KSYM_SYMBOL_LEN (sizeof("%s+%#lx/%#lx [%s]") + (KSYM_NAME_LEN - 1) + \
+                        2*(BITS_PER_LONG*3/10) + (MODULE_NAME_LEN - 1) + 1)
 
 #ifdef CONFIG_KALLSYMS
 /* Lookup the address for a symbol. Returns 0 if not found. */
 
 /* 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[KSYM_NAME_LEN];
        unsigned long i;
        unsigned int off;
 
 {
        const char *msym;
 
-       namebuf[KSYM_NAME_LEN] = 0;
+       namebuf[KSYM_NAME_LEN - 1] = 0;
        namebuf[0] = 0;
 
        if (is_ksym_addr(addr)) {
        /* see if it's in a module */
        msym = module_address_lookup(addr, symbolsize, offset, modname);
        if (msym)
-               return strncpy(namebuf, msym, KSYM_NAME_LEN);
+               return strncpy(namebuf, msym, KSYM_NAME_LEN - 1);
 
        return NULL;
 }
 int lookup_symbol_name(unsigned long addr, char *symname)
 {
        symname[0] = '\0';
-       symname[KSYM_NAME_LEN] = '\0';
+       symname[KSYM_NAME_LEN - 1] = '\0';
 
        if (is_ksym_addr(addr)) {
                unsigned long pos;
                        unsigned long *offset, char *modname, char *name)
 {
        name[0] = '\0';
-       name[KSYM_NAME_LEN] = '\0';
+       name[KSYM_NAME_LEN - 1] = '\0';
 
        if (is_ksym_addr(addr)) {
                unsigned long pos;
        char *modname;
        const char *name;
        unsigned long offset, size;
-       char namebuf[KSYM_NAME_LEN+1];
+       char namebuf[KSYM_NAME_LEN];
 
        name = kallsyms_lookup(address, &size, &offset, &modname, namebuf);
        if (!name)
        unsigned long value;
        unsigned int nameoff; /* If iterating in core kernel symbols */
        char type;
-       char name[KSYM_NAME_LEN+1];
-       char module_name[MODULE_NAME_LEN + 1];
+       char name[KSYM_NAME_LEN];
+       char module_name[MODULE_NAME_LEN];
        int exported;
 };
 
 
 
 static void print_lock_name(struct lock_class *class)
 {
-       char str[KSYM_NAME_LEN + 1], c1, c2, c3, c4;
+       char str[KSYM_NAME_LEN], c1, c2, c3, c4;
        const char *name;
 
        get_usage_chars(class, &c1, &c2, &c3, &c4);
 static void print_lockdep_cache(struct lockdep_map *lock)
 {
        const char *name;
-       char str[KSYM_NAME_LEN + 1];
+       char str[KSYM_NAME_LEN];
 
        name = lock->name;
        if (!name)
 
                        sym = get_ksymbol(mod, addr, NULL, NULL);
                        if (!sym)
                                goto out;
-                       strlcpy(symname, sym, KSYM_NAME_LEN + 1);
+                       strlcpy(symname, sym, KSYM_NAME_LEN);
                        mutex_unlock(&module_mutex);
                        return 0;
                }
                        if (!sym)
                                goto out;
                        if (modname)
-                               strlcpy(modname, mod->name, MODULE_NAME_LEN + 1);
+                               strlcpy(modname, mod->name, MODULE_NAME_LEN);
                        if (name)
-                               strlcpy(name, sym, KSYM_NAME_LEN + 1);
+                               strlcpy(name, sym, KSYM_NAME_LEN);
                        mutex_unlock(&module_mutex);
                        return 0;
                }
                        *value = mod->symtab[symnum].st_value;
                        *type = mod->symtab[symnum].st_info;
                        strlcpy(name, mod->strtab + mod->symtab[symnum].st_name,
-                               KSYM_NAME_LEN + 1);
-                       strlcpy(module_name, mod->name, MODULE_NAME_LEN + 1);
+                               KSYM_NAME_LEN);
+                       strlcpy(module_name, mod->name, MODULE_NAME_LEN);
                        *exported = is_exported(name, mod);
                        mutex_unlock(&module_mutex);
                        return 0;
 
 
 static void print_name_offset(struct seq_file *m, void *sym)
 {
-       char symname[KSYM_NAME_LEN+1];
+       char symname[KSYM_NAME_LEN];
 
        if (lookup_symbol_name((unsigned long)sym, symname) < 0)
                SEQ_printf(m, "<%p>", sym);
 
 
 static void print_name_offset(struct seq_file *m, unsigned long addr)
 {
-       char symname[KSYM_NAME_LEN+1];
+       char symname[KSYM_NAME_LEN];
 
        if (lookup_symbol_name(addr, symname) < 0)
                seq_printf(m, "<%p>", (void *)addr);
 
 {
 #ifdef CONFIG_KALLSYMS
        unsigned long offset, size;
-       char modname[MODULE_NAME_LEN + 1], name[KSYM_NAME_LEN + 1];
+       char modname[MODULE_NAME_LEN], name[KSYM_NAME_LEN];
 
        if (lookup_symbol_attrs(address, &size, &offset, modname, name) == 0) {
                seq_printf(m, "%s+%#lx/%#lx", name, offset, size);
 
 #include <string.h>
 #include <ctype.h>
 
-#define KSYM_NAME_LEN          127
+#define KSYM_NAME_LEN          128
 
 
 struct sym_entry {
        unsigned int i, k, off;
        unsigned int best_idx[256];
        unsigned int *markers;
-       char buf[KSYM_NAME_LEN+1];
+       char buf[KSYM_NAME_LEN];
 
        printf("#include <asm/types.h>\n");
        printf("#if BITS_PER_LONG == 64\n");