>  void *__symbol_get(const char *symbol)
>  {
> -     struct module *owner;
> -     const struct kernel_symbol *sym;
> +     struct find_symbol_arg fsa = {
> +             .name   = symbol,
> +             .gplok  = true,
> +             .warn   = true,
> +     };
>  
>       preempt_disable();
> -     sym = find_symbol(symbol, &owner, NULL, NULL, true, true);
> -     if (sym && strong_try_module_get(owner))
> -             sym = NULL;
> +     if (!find_symbol(&fsa) || !strong_try_module_get(fsa.owner)) {

I think this should be in fact

  if (!find_symbol(&fsa) || strong_try_module_get(fsa.owner)) {

to get the logic right (note the missing !). We want to return NULL if 
strong_try_module_get() does not succeed for a found symbol.

> +             preempt_enable();
> +             return NULL;
> +     }
>       preempt_enable();
> -
> -     return sym ? (void *)kernel_symbol_value(sym) : NULL;
> +     return (void *)kernel_symbol_value(fsa.sym);
>  }
>  EXPORT_SYMBOL_GPL(__symbol_get);

Miroslav
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

Reply via email to