浏览代码

dm kcopyd: fix job_pool leak

Fix memory leak introduced by commit a6e50b409d3f9e0833e69c3c9cca822e8fa4adbb
(dm snapshot: skip reading origin when overwriting complete chunk).

When allocating a set of jobs from kc->job_pool, job->master_job must be
set (to point to itself) so that the mempool item gets freed when the
master_job completes.

master_job was introduced by commit c6ea41fbbe08f270a8edef99dc369faf809d1bd6
(dm kcopyd: preallocate sub jobs to avoid deadlock)

Reported-by: Michael Leun <ml@newton.leun.net>
Cc: Mikulas Patocka <mpatocka@redhat.com>
Signed-off-by: Alasdair G Kergon <agk@redhat.com>
Alasdair G Kergon 13 年之前
父节点
当前提交
d136f2efdf
共有 1 个文件被更改,包括 1 次插入0 次删除
  1. 1 0
      drivers/md/dm-kcopyd.c

+ 1 - 0
drivers/md/dm-kcopyd.c

@@ -628,6 +628,7 @@ void *dm_kcopyd_prepare_callback(struct dm_kcopyd_client *kc,
 	job->kc = kc;
 	job->kc = kc;
 	job->fn = fn;
 	job->fn = fn;
 	job->context = context;
 	job->context = context;
+	job->master_job = job;
 
 
 	atomic_inc(&kc->nr_jobs);
 	atomic_inc(&kc->nr_jobs);