Whamcloud - gitweb
LU-17678 quota: fix memleak in qmt_setup_lqe_gd()
[fs/lustre-release.git] / lustre / quota / qmt_entry.c
index 6c37036..5a55034 100644 (file)
@@ -1323,7 +1323,15 @@ void qmt_setup_lqe_gd(const struct lu_env *env, struct qmt_device *qmt,
                                  lqe_qtype(lqe), &lqe->lqe_id);
        qmt_seed_glbe(env, lgd, false);
 
-       lqe->lqe_glbl_data = lgd;
+       mutex_lock(&lqe->lqe_glbl_data_lock);
+       if (lqe->lqe_glbl_data == NULL) {
+               lqe->lqe_glbl_data = lgd;
+               lgd = NULL;
+       }
+       mutex_unlock(&lqe->lqe_glbl_data_lock);
+       if (lgd)
+               qmt_free_lqe_gd(lgd);
+
        qmt_id_lock_notify(qmt, lqe);
 
        qti_lqes_fini(env);