diff options
| author | Kaho Ng <ngkaho1234@gmail.com> | 2016-06-28 17:18:52 +0800 |
|---|---|---|
| committer | Kaho Ng <ngkaho1234@gmail.com> | 2016-06-28 23:03:31 +0800 |
| commit | 358f3f8f49a50ea3f2032a31eb73f16411fad8a4 (patch) | |
| tree | e5f52e0d762483415520d03e2e53cd8ac42815e5 /src | |
| parent | 321eba33ebbadfe61ece480f877260788c6cf8b8 (diff) | |
ext4_journal: fix memory leakage when revoking a block repeatedly
Diffstat (limited to 'src')
| -rw-r--r-- | src/ext4_journal.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/src/ext4_journal.c b/src/ext4_journal.c index 1f70c81..01a8c08 100644 --- a/src/ext4_journal.c +++ b/src/ext4_journal.c @@ -1656,8 +1656,16 @@ int jbd_trans_set_block_dirty(struct jbd_trans *trans, int jbd_trans_revoke_block(struct jbd_trans *trans, ext4_fsblk_t lba) { - struct jbd_revoke_rec *rec = - calloc(1, sizeof(struct jbd_revoke_rec)); + struct jbd_revoke_rec tmp_rec = { + .lba = lba + }, *rec; + rec = RB_FIND(jbd_revoke_tree, + &trans->revoke_root, + &tmp_rec); + if (rec) + return EOK; + + rec = calloc(1, sizeof(struct jbd_revoke_rec)); if (!rec) return ENOMEM; |
