diff options
author | Shaohua Li <shli@fb.com> | 2016-01-22 18:54:42 -0500 |
---|---|---|
committer | Shaohua Li <shli@fb.com> | 2016-01-24 21:13:18 -0500 |
commit | 4ac7a65f8070098187b1e2afa992848366aae079 (patch) | |
tree | 8849ccc28d50cde6f814b7280ac820a538fc30ec /drivers/md | |
parent | 6a84f57241e1fb9fb6772256f538d1073359a32d (diff) |
md-cluster: fix missing memory free
There are several places we allocate dlm_lock_resource, but not free it.
leave() need free a lock resource too (from Guoqing)
Cc: Goldwyn Rodrigues <rgoldwyn@suse.com>
Cc: Guoqing Jiang <gqjiang@suse.com>
Cc: NeilBrown <neilb@suse.com>
Signed-off-by: Shaohua Li <shli@fb.com>
Diffstat (limited to 'drivers/md')
-rw-r--r-- | drivers/md/md-cluster.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/drivers/md/md-cluster.c b/drivers/md/md-cluster.c index 0ded8e97751d..dd97d4245822 100644 --- a/drivers/md/md-cluster.c +++ b/drivers/md/md-cluster.c | |||
@@ -293,6 +293,7 @@ static void recover_bitmaps(struct md_thread *thread) | |||
293 | dlm_unlock: | 293 | dlm_unlock: |
294 | dlm_unlock_sync(bm_lockres); | 294 | dlm_unlock_sync(bm_lockres); |
295 | clear_bit: | 295 | clear_bit: |
296 | lockres_free(bm_lockres); | ||
296 | clear_bit(slot, &cinfo->recovery_map); | 297 | clear_bit(slot, &cinfo->recovery_map); |
297 | } | 298 | } |
298 | } | 299 | } |
@@ -682,8 +683,10 @@ static int gather_all_resync_info(struct mddev *mddev, int total_slots) | |||
682 | bm_lockres = lockres_init(mddev, str, NULL, 1); | 683 | bm_lockres = lockres_init(mddev, str, NULL, 1); |
683 | if (!bm_lockres) | 684 | if (!bm_lockres) |
684 | return -ENOMEM; | 685 | return -ENOMEM; |
685 | if (i == (cinfo->slot_number - 1)) | 686 | if (i == (cinfo->slot_number - 1)) { |
687 | lockres_free(bm_lockres); | ||
686 | continue; | 688 | continue; |
689 | } | ||
687 | 690 | ||
688 | bm_lockres->flags |= DLM_LKF_NOQUEUE; | 691 | bm_lockres->flags |= DLM_LKF_NOQUEUE; |
689 | ret = dlm_lock_sync(bm_lockres, DLM_LOCK_PW); | 692 | ret = dlm_lock_sync(bm_lockres, DLM_LOCK_PW); |
@@ -858,6 +861,7 @@ static int leave(struct mddev *mddev) | |||
858 | lockres_free(cinfo->token_lockres); | 861 | lockres_free(cinfo->token_lockres); |
859 | lockres_free(cinfo->ack_lockres); | 862 | lockres_free(cinfo->ack_lockres); |
860 | lockres_free(cinfo->no_new_dev_lockres); | 863 | lockres_free(cinfo->no_new_dev_lockres); |
864 | lockres_free(cinfo->resync_lockres); | ||
861 | lockres_free(cinfo->bitmap_lockres); | 865 | lockres_free(cinfo->bitmap_lockres); |
862 | unlock_all_bitmaps(mddev); | 866 | unlock_all_bitmaps(mddev); |
863 | dlm_release_lockspace(cinfo->lockspace, 2); | 867 | dlm_release_lockspace(cinfo->lockspace, 2); |