a race in qmt_setup_lqe_gd() can lead to leaked lqe_glbl_data.
Signed-off-by: Alex Zhuravlev <bzzz@whamcloud.com>
Change-Id: I807aa276fa373cec493cae9d8182b28d996f5a8b
Reviewed-on: https://review.whamcloud.com/c/fs/lustre-release/+/54575
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
Reviewed-by: Sergey Cheremencev <scherementsev@ddn.com>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
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);