fs/ocfs2/stack_user.c | 1 + 1 file changed, 1 insertion(+)
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
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
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));
© 2016 - 2025 Red Hat, Inc.