[Devel] Re: [PATCH 5/5] Fix race between cat /proc/slab_allocators and rmmod

Andrew Morton akpm at linux-foundation.org
Tue Apr 3 17:08:27 PDT 2007


On Mon, 2 Apr 2007 19:03:16 +0400
Alexey Dobriyan <adobriyan at sw.ru> wrote:

> +int lookup_module_symbol_attrs(unsigned long addr, unsigned long *size,
> +			unsigned long *offset, char *modname, char *name)
> +{
> +	struct module *mod;
> +
> +	mutex_lock(&module_mutex);
> +	list_for_each_entry(mod, &modules, list) {
> +		if (within(addr, mod->module_init, mod->init_size) ||
> +		    within(addr, mod->module_core, mod->core_size)) {
> +			const char *sym;
> +
> +			sym = get_ksymbol(mod, addr, size, offset);
> +			if (!sym)
> +				goto out;
> +			if (modname)
> +				strlcpy(modname, mod->name, MODULE_NAME_LEN + 1);
> +			if (name)
> +				strlcpy(name, sym, KSYM_NAME_LEN + 1);
> +			mutex_unlock(&module_mutex);
> +			return 0;
> +		}
> +	}
> +out:
> +	mutex_unlock(&module_mutex);
> +	return -ERANGE;
> +}
> +

The functions lookup_symbol_name() and lookup_symbol_attrs() are quite
general and are likely to be used for other applications in the future.

Could we please pick better names for them?  The names you've chosen are
far too general-sounding - we have a lot of different types of "symbol" in
the kernel!  Perhaps module_lookup_symbol_attrs() and
kallsyms_lookup_symbol() and kallsyms_lookup_attrs() or something.  But
something prefixed with kallsyms_ and module_.

Also, as these general-use functions are exported to all of vmlinux, a little
bit of documentation for them would be good.




More information about the Devel mailing list