Mercurial > illumos > illumos-gate
changeset 3655:bf932d11a0cb
6511976 memory leak in dmu_sendbackup()
6511978 memory leak in dmu_recvbackup()
author | gw25295 |
---|---|
date | Wed, 14 Feb 2007 20:19:07 -0800 |
parents | 9c6042b08979 |
children | 6ef316e5135c |
files | usr/src/uts/common/fs/zfs/dmu_send.c |
diffstat | 1 files changed, 5 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/usr/src/uts/common/fs/zfs/dmu_send.c Wed Feb 14 19:54:59 2007 -0800 +++ b/usr/src/uts/common/fs/zfs/dmu_send.c Wed Feb 14 20:19:07 2007 -0800 @@ -265,6 +265,7 @@ if (err) { if (err == EINTR && ba.err) err = ba.err; + kmem_free(drr, sizeof (dmu_replay_record_t)); return (err); } @@ -272,8 +273,10 @@ drr->drr_type = DRR_END; drr->drr_u.drr_end.drr_checksum = ba.zc; - if (dump_bytes(&ba, drr, sizeof (dmu_replay_record_t))) + if (dump_bytes(&ba, drr, sizeof (dmu_replay_record_t))) { + kmem_free(drr, sizeof (dmu_replay_record_t)); return (ba.err); + } kmem_free(drr, sizeof (dmu_replay_record_t)); @@ -794,6 +797,7 @@ ds->ds_prev->ds_phys->ds_guid != drrb->drr_fromguid) { dsl_dataset_close(ds, DS_MODE_EXCLUSIVE, FTAG); + kmem_free(ra.buf, ra.bufsize); return (ENODEV); } (void) dsl_dataset_rollback(ds);