From: Zhouyang Jia
> Sent: 12 June 2018 05:49
> 
> When try_module_get fails, the lack of error-handling code may
> cause unexpected results.
> 
> This patch adds error-handling code after calling try_module_get.
...
> +++ b/drivers/staging/lustre/lnet/klnds/socklnd/socklnd.c
> @@ -2422,7 +2422,10 @@ ksocknal_base_startup(void)
> 
>       /* flag lists/ptrs/locks initialised */
>       ksocknal_data.ksnd_init = SOCKNAL_INIT_DATA;
> -     try_module_get(THIS_MODULE);
> +     if (!try_module_get(THIS_MODULE)) {
> +             CERROR("%s: cannot get module\n", __func__);
> +             goto failed;
> +     }


Can try_module_get(THIS_MODULE) ever fail?
Since you are running code in 'THIS_MODULE' the caller must have a
reference that can't go away.
So try_module_get() just increments the count that is already greater
than zero.

Similarly module_put(THIS_MODULE) must never be able to release the
last reference.
Any such calls that aren't in error paths after try_module_get() are
probably buggy.

        David

Reply via email to