Index: linux-2.6.21-rc4/mm/slub.c =================================================================== --- linux-2.6.21-rc4.orig/mm/slub.c 2007-03-21 21:21:25.000000000 -0700 +++ linux-2.6.21-rc4/mm/slub.c 2007-03-21 21:34:17.000000000 -0700 @@ -2319,6 +2319,26 @@ #ifdef CONFIG_SYSFS + +/* From mm */ +int sprint_symbol(char *buffer, unsigned long address) +{ + char *modname; + const char *name; + unsigned long offset, size; + char namebuf[KSYM_NAME_LEN+1]; + + name = kallsyms_lookup(address, &size, &offset, &modname, namebuf); + if (!name) + return sprintf(buffer, "0x%lx", address); + + if (modname) + return sprintf(buffer, "%s+%#lx/%#lx [%s]", name, offset, + size, modname); + + return sprintf(buffer, "%s+%#lx/%#lx", name, offset, size); +} + #define to_slab_attr(n) container_of(n, struct slab_attribute, attr) #define to_slab(n) container_of(n, struct kmem_cache, kobj); @@ -2699,16 +2719,17 @@ if (slab_state < SYSFS) { struct saved_alias *al = kmalloc(sizeof(struct saved_alias), GFP_KERNEL); + BUG_ON(!al); al->s = s; al->name = name; al->next = alias_list; alias_list = al; - return; + } else { + err = sysfs_create_link(&slab_subsys.kset.kobj, + &s->kobj, name); + BUG_ON(err < 0); } - - err = sysfs_create_link(&slab_subsys.kset.kobj, &s->kobj, name); - BUG_ON(err < 0); } int __init slab_sysfs_init(void) @@ -2739,6 +2760,11 @@ kfree(al); } + /* + * Setup config variables + * min_order, max_order, nomerge, debug + */ + return 0; }