dmu_send: redacted: fix memory leak on invalid redaction/from bookmark
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Reviewed-by: Matt Ahrens <matt@delphix.com> Signed-off-by: Christian Schwarz <me@cschwarz.com> Closes #9867
This commit is contained in:
parent
f658f61c72
commit
0ea03c7c82
|
@ -2342,12 +2342,6 @@ dmu_send_impl(struct dmu_send_params *dspp)
|
|||
return (err);
|
||||
}
|
||||
|
||||
from_arg = kmem_zalloc(sizeof (*from_arg), KM_SLEEP);
|
||||
to_arg = kmem_zalloc(sizeof (*to_arg), KM_SLEEP);
|
||||
rlt_arg = kmem_zalloc(sizeof (*rlt_arg), KM_SLEEP);
|
||||
smt_arg = kmem_zalloc(sizeof (*smt_arg), KM_SLEEP);
|
||||
spt_arg = kmem_zalloc(sizeof (*spt_arg), KM_SLEEP);
|
||||
|
||||
/*
|
||||
* If we're doing a redacted send, hold the bookmark's redaction list.
|
||||
*/
|
||||
|
@ -2382,6 +2376,12 @@ dmu_send_impl(struct dmu_send_params *dspp)
|
|||
|
||||
dsl_dataset_long_hold(to_ds, FTAG);
|
||||
|
||||
from_arg = kmem_zalloc(sizeof (*from_arg), KM_SLEEP);
|
||||
to_arg = kmem_zalloc(sizeof (*to_arg), KM_SLEEP);
|
||||
rlt_arg = kmem_zalloc(sizeof (*rlt_arg), KM_SLEEP);
|
||||
smt_arg = kmem_zalloc(sizeof (*smt_arg), KM_SLEEP);
|
||||
spt_arg = kmem_zalloc(sizeof (*spt_arg), KM_SLEEP);
|
||||
|
||||
drr = create_begin_record(dspp, os, featureflags);
|
||||
dssp = setup_send_progress(dspp);
|
||||
|
||||
|
|
|
@ -77,6 +77,10 @@ log_mustnot zfs redact $recvfs@snap book5 $clone3@snap
|
|||
# Nor may a redacted dataset appear in the redaction list.
|
||||
log_mustnot zfs redact testpool2/recvfs@snap2 book7 testpool2/recvfs@snap
|
||||
|
||||
# Non-redaction bookmark cannot be sent and produces invalid argument error
|
||||
log_must zfs bookmark "$sendfs@snap1" "$sendfs#book8"
|
||||
log_must eval "zfs send --redact book8 -i $sendfs@snap1 $sendfs@snap2 2>&1 | head -n 100 | grep 'internal error: Invalid argument'"
|
||||
|
||||
# Error messages for common usage errors
|
||||
log_mustnot_expect "not contain '#'" zfs redact $sendfs@snap1 \#book $sendfs@snap2
|
||||
log_mustnot_expect "not contain '#'" zfs redact $sendfs@snap1 $sendfs#book $sendfs@snap2
|
||||
|
|
Loading…
Reference in New Issue