Fix incorrect size given to bqueue_enqueue() call in dmu_redact.c

We pass sizeof (struct redact_record *) rather than sizeof (struct
redact_record). Passing the pointer size is wrong.

Coverity caught this in two places.

Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Richard Yao <richard.yao@alumni.stonybrook.edu>
Closes #13885
This commit is contained in:
Richard Yao 2022-09-15 19:21:21 -04:00 committed by GitHub
parent fa22ec569c
commit ddb1fd91c0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -142,7 +142,7 @@ record_merge_enqueue(bqueue_t *q, struct redact_record **build,
{ {
if (new->eos_marker) { if (new->eos_marker) {
if (*build != NULL) if (*build != NULL)
bqueue_enqueue(q, *build, sizeof (*build)); bqueue_enqueue(q, *build, sizeof (**build));
bqueue_enqueue_flush(q, new, sizeof (*new)); bqueue_enqueue_flush(q, new, sizeof (*new));
return; return;
} }
@ -824,7 +824,7 @@ perform_thread_merge(bqueue_t *q, uint32_t num_threads,
avl_destroy(&end_tree); avl_destroy(&end_tree);
kmem_free(redact_nodes, num_threads * sizeof (*redact_nodes)); kmem_free(redact_nodes, num_threads * sizeof (*redact_nodes));
if (current_record != NULL) if (current_record != NULL)
bqueue_enqueue(q, current_record, sizeof (current_record)); bqueue_enqueue(q, current_record, sizeof (*current_record));
return (err); return (err);
} }