We found a possible memory leak in dlm_process_recovery_data when doing
code review. In dlm_process_recovery_data, it creates newlock each time,
but don't free when it is bad, and then it will lead to memory leak.

Cc: sta...@vger.kernel.org
Signed-off-by: Joseph Qi <joseph...@huawei.com>
Reviewed-by: Jie Liu <jeff....@oracle.com>

---
 fs/ocfs2/dlm/dlmrecovery.c |    4 ++++
 1 file changed, 4 insertions(+)

diff --git a/fs/ocfs2/dlm/dlmrecovery.c b/fs/ocfs2/dlm/dlmrecovery.c
index eeac97b..9f08523 100644
--- a/fs/ocfs2/dlm/dlmrecovery.c
+++ b/fs/ocfs2/dlm/dlmrecovery.c
@@ -1974,6 +1974,10 @@ skip_lvb:
                             res->lockname.len, res->lockname.name, ml->node);
                        dlm_lockres_set_refmap_bit(dlm, res, ml->node);
                        added++;
+               } else {
+                       /* Free the new lock if it is bad */
+                       dlm_lock_put(newlock);
+                       newlock = NULL;
                }
                spin_unlock(&res->spinlock);
        }
-- 
1.7.9.7

_______________________________________________
Ocfs2-devel mailing list
Ocfs2-devel@oss.oracle.com
https://oss.oracle.com/mailman/listinfo/ocfs2-devel

Reply via email to