Re: [PATCH 05/37] kdb: core for kgdb back end

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Please use --no-chain-reply-to when posting patches using git, these inf
deep nested series are impossible to read.

On Wed, 2009-12-23 at 15:19 -0600, Jason Wessel wrote:
> diff --git a/kernel/module.c b/kernel/module.c
> index e96b8ed..25f6a7b 100644
> --- a/kernel/module.c
> +++ b/kernel/module.c
> @@ -27,6 +27,7 @@
>  #include <linux/slab.h>
>  #include <linux/vmalloc.h>
>  #include <linux/elf.h>
> +#include <linux/kdb.h>
>  #include <linux/proc_fs.h>
>  #include <linux/seq_file.h>
>  #include <linux/syscalls.h>
> @@ -79,6 +80,10 @@ EXPORT_TRACEPOINT_SYMBOL(module_get);
>  DEFINE_MUTEX(module_mutex);
>  EXPORT_SYMBOL_GPL(module_mutex);
>  static LIST_HEAD(modules);
> +#ifdef CONFIG_KGDB_KDB
> +struct list_head *kdb_modules = &modules; /* kdb needs the list of
> modules */
> +#endif /* CONFIG_KGDB_KDB */
> +
>  
>  /* Block module loading/unloading? */
>  int modules_disabled = 0;
> @@ -2654,8 +2659,14 @@ int module_get_kallsym(unsigned int symnum,
> unsigned long *value, char *type,
>                         char *name, char *module_name, int *exported)
>  {
>         struct module *mod;
> +#ifdef CONFIG_KGDB_KDB
> +       int get_lock = !KDB_IS_RUNNING();
> +#else
> +#define        get_lock 1
> +#endif
>  
> -       preempt_disable();
> +       if (get_lock)
> +               preempt_disable();
>         list_for_each_entry_rcu(mod, &modules, list) {
>                 if (symnum < mod->num_symtab) {
>                         *value = mod->symtab[symnum].st_value;
> @@ -2664,12 +2675,14 @@ int module_get_kallsym(unsigned int symnum,
> unsigned long *value, char *type,
>                                 KSYM_NAME_LEN);
>                         strlcpy(module_name, mod->name,
> MODULE_NAME_LEN);
>                         *exported = is_exported(name, *value, mod);
> -                       preempt_enable();
> +                       if (get_lock)
> +                               preempt_enable();
>                         return 0;
>                 }
>                 symnum -= mod->num_symtab;
>         }
> -       preempt_enable();
> +       if (get_lock)
> +               preempt_enable();
>         return -ERANGE;
>  }

Could you explain this?

--
To unsubscribe from this list: send the line "unsubscribe linux-arch" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Kernel]     [Kernel Newbies]     [x86 Platform Driver]     [Netdev]     [Linux Wireless]     [Netfilter]     [Bugtraq]     [Linux Filesystems]     [Yosemite Discussion]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Device Mapper]

  Powered by Linux