Whamcloud - gitweb
LU-12511 ldlm: free resource when ldlm_lock_create() fails. 85/45585/2
authorMr. NeilBrown <neilb@suse.de>
Tue, 16 Nov 2021 16:11:22 +0000 (11:11 -0500)
committerOleg Drokin <green@whamcloud.com>
Tue, 30 Nov 2021 03:46:35 +0000 (03:46 +0000)
ldlm_lock_create() gets a resource, but don't put it on
all failure paths. It should.

Change-Id: Ib49bcafdeac834c412adad9db135034d1ea06a04
Signed-off-by: Mr. NeilBrown <neilb@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Reviewed-on: https://review.whamcloud.com/45585
Tested-by: jenkins <devops@whamcloud.com>
Reviewed-by: Olaf Faaland-LLNL <faaland1@llnl.gov>
Reviewed-by: Andriy Skulysh <andriy.skulysh@hpe.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
lustre/ldlm/ldlm_lock.c

index d9b1ca2..3ceadc9 100644 (file)
@@ -1672,8 +1672,10 @@ struct ldlm_lock *ldlm_lock_create(struct ldlm_namespace *ns,
                RETURN(ERR_CAST(res));
 
        lock = ldlm_lock_new(res);
                RETURN(ERR_CAST(res));
 
        lock = ldlm_lock_new(res);
-       if (lock == NULL)
+       if (!lock) {
+               ldlm_resource_putref(res);
                RETURN(ERR_PTR(-ENOMEM));
                RETURN(ERR_PTR(-ENOMEM));
+       }
 
        lock->l_req_mode = mode;
        lock->l_ast_data = data;
 
        lock->l_req_mode = mode;
        lock->l_ast_data = data;