[PATCH] ocfs2: fix double free in user_cluster_connect()

Dan Carpenter posted 1 patch 1 week, 1 day ago
fs/ocfs2/stack_user.c | 1 +
1 file changed, 1 insertion(+)
[PATCH] ocfs2: fix double free in user_cluster_connect()
Posted by Dan Carpenter 1 week, 1 day ago
The user_cluster_disconnect() function frees "conn->cc_private" which is
"lc" but then the error handling frees "lc" a second time.  Set "lc" to
NULL on this path to avoid a double free.

Fixes: c994c2ebdbbc ("ocfs2: use the new DLM operation callbacks while requesting new lockspace")
Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>
---
 fs/ocfs2/stack_user.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/fs/ocfs2/stack_user.c b/fs/ocfs2/stack_user.c
index 765105f1ff8a..be0a5758bd40 100644
--- a/fs/ocfs2/stack_user.c
+++ b/fs/ocfs2/stack_user.c
@@ -1011,6 +1011,7 @@ static int user_cluster_connect(struct ocfs2_cluster_connection *conn)
 			printk(KERN_ERR "ocfs2: Could not determine"
 					" locking version\n");
 			user_cluster_disconnect(conn);
+			lc = NULL;
 			goto out;
 		}
 		wait_event(lc->oc_wait, (atomic_read(&lc->oc_this_node) > 0));
-- 
2.51.0
Re: [PATCH] ocfs2: fix double free in user_cluster_connect()
Posted by Goldwyn Rodrigues 1 week, 1 day ago
On 14:26 23/09, Dan Carpenter wrote:
> The user_cluster_disconnect() function frees "conn->cc_private" which is
> "lc" but then the error handling frees "lc" a second time.  Set "lc" to
> NULL on this path to avoid a double free.
> 
> Fixes: c994c2ebdbbc ("ocfs2: use the new DLM operation callbacks while requesting new lockspace")
> Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>

Looks good. Thanks!

Reviewed-by: Goldwyn Rodrigues <rgoldwyn@suse.de>

-- 
Goldwyn
Re: [PATCH] ocfs2: fix double free in user_cluster_connect()
Posted by Joseph Qi 1 week, 1 day ago

On 2025/9/23 19:26, Dan Carpenter wrote:
> The user_cluster_disconnect() function frees "conn->cc_private" which is
> "lc" but then the error handling frees "lc" a second time.  Set "lc" to
> NULL on this path to avoid a double free.
> 
> Fixes: c994c2ebdbbc ("ocfs2: use the new DLM operation callbacks while requesting new lockspace")
> Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>

Looks fine.
Reviewed-by: Joseph Qi <joseph.qi@linux.alibaba.com>

> ---
>  fs/ocfs2/stack_user.c | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/fs/ocfs2/stack_user.c b/fs/ocfs2/stack_user.c
> index 765105f1ff8a..be0a5758bd40 100644
> --- a/fs/ocfs2/stack_user.c
> +++ b/fs/ocfs2/stack_user.c
> @@ -1011,6 +1011,7 @@ static int user_cluster_connect(struct ocfs2_cluster_connection *conn)
>  			printk(KERN_ERR "ocfs2: Could not determine"
>  					" locking version\n");
>  			user_cluster_disconnect(conn);
> +			lc = NULL;
>  			goto out;
>  		}
>  		wait_event(lc->oc_wait, (atomic_read(&lc->oc_this_node) > 0));