Whamcloud - gitweb
LU-9679 lnet: always check return of try_module_get() 54/36854/6
authorMr NeilBrown <neilb@suse.de>
Wed, 6 Nov 2019 04:45:27 +0000 (15:45 +1100)
committerOleg Drokin <green@whamcloud.com>
Fri, 10 Jan 2020 07:41:28 +0000 (07:41 +0000)
try_module_get() can fail, so the return value should be checked.
If we *know* that we already hold a reference, __module_get()
should be used instead.

Test-Parameters: trivial
Signed-off-by: Mr NeilBrown <neilb@suse.de>
Change-Id: Id526f9ae3829a50fe7df7069230804322cd4558e
Reviewed-on: https://review.whamcloud.com/36854
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: James Simmons <jsimmons@infradead.org>
Reviewed-by: Chris Horn <hornc@cray.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
lnet/klnds/gnilnd/gnilnd.c
lnet/klnds/o2iblnd/o2iblnd.c
lnet/klnds/socklnd/socklnd.c

index d1a73a7..90ee025 100644 (file)
@@ -2304,7 +2304,8 @@ int kgnilnd_base_startup(void)
 
        /* OK to call kgnilnd_api_shutdown() to cleanup now */
        kgnilnd_data.kgn_init = GNILND_INIT_DATA;
 
        /* OK to call kgnilnd_api_shutdown() to cleanup now */
        kgnilnd_data.kgn_init = GNILND_INIT_DATA;
-       try_module_get(THIS_MODULE);
+       if (!try_module_get(THIS_MODULE))
+               GOTO(failed, rc = -ENOENT);
 
        rwlock_init(&kgnilnd_data.kgn_peer_conn_lock);
 
 
        rwlock_init(&kgnilnd_data.kgn_peer_conn_lock);
 
index e6b517b..3437f30 100644 (file)
@@ -3031,7 +3031,9 @@ kiblnd_base_startup(struct net *ns)
 
        LASSERT(kiblnd_data.kib_init == IBLND_INIT_NOTHING);
 
 
        LASSERT(kiblnd_data.kib_init == IBLND_INIT_NOTHING);
 
-       try_module_get(THIS_MODULE);
+       if (!try_module_get(THIS_MODULE))
+               goto failed;
+
        memset(&kiblnd_data, 0, sizeof(kiblnd_data)); /* zero pointers, flags etc */
 
        rwlock_init(&kiblnd_data.kib_global_lock);
        memset(&kiblnd_data, 0, sizeof(kiblnd_data)); /* zero pointers, flags etc */
 
        rwlock_init(&kiblnd_data.kib_global_lock);
index ae0e658..18c7e6a 100644 (file)
@@ -2365,7 +2365,8 @@ ksocknal_base_startup(void)
 
        /* flag lists/ptrs/locks initialised */
        ksocknal_data.ksnd_init = SOCKNAL_INIT_DATA;
 
        /* flag lists/ptrs/locks initialised */
        ksocknal_data.ksnd_init = SOCKNAL_INIT_DATA;
-       try_module_get(THIS_MODULE);
+       if (!try_module_get(THIS_MODULE))
+               goto failed;
 
        /* Create a scheduler block per available CPT */
        ksocknal_data.ksnd_schedulers = cfs_percpt_alloc(lnet_cpt_table(),
 
        /* Create a scheduler block per available CPT */
        ksocknal_data.ksnd_schedulers = cfs_percpt_alloc(lnet_cpt_table(),