summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJerry Jelinek <jerry.jelinek@joyent.com>2015-07-29 22:40:47 +0000
committerJerry Jelinek <jerry.jelinek@joyent.com>2015-07-29 22:40:47 +0000
commit6f2b4ac2461254029e30e71d710eff1b5ee7799d (patch)
tree73a836f3da2fa8f3f17f9a7babb477d564041e34
parent4e99baf7ab6449a1e3776a3c42d63db98bcc9e28 (diff)
downloadillumos-joyent-6f2b4ac2461254029e30e71d710eff1b5ee7799d.tar.gz
OS-4539 zfs receive_read_record() may allocate nothing
Reviewed by: Joshua M. Clulow <jmc@joyent.com>
-rw-r--r--usr/src/uts/common/fs/zfs/dmu_send.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/usr/src/uts/common/fs/zfs/dmu_send.c b/usr/src/uts/common/fs/zfs/dmu_send.c
index 0b57da6b8a..eeb77f4b1e 100644
--- a/usr/src/uts/common/fs/zfs/dmu_send.c
+++ b/usr/src/uts/common/fs/zfs/dmu_send.c
@@ -22,7 +22,7 @@
* Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
* Copyright 2011 Nexenta Systems, Inc. All rights reserved.
* Copyright (c) 2011, 2015 by Delphix. All rights reserved.
- * Copyright (c) 2014, Joyent, Inc. All rights reserved.
+ * Copyright (c) 2015, Joyent, Inc. All rights reserved.
* Copyright 2014 HybridCluster. All rights reserved.
*/
@@ -2084,8 +2084,12 @@ receive_read_record(struct receive_arg *ra)
{
struct drr_object *drro = &ra->rrd->header.drr_u.drr_object;
uint32_t size = P2ROUNDUP(drro->drr_bonuslen, 8);
- void *buf = kmem_zalloc(size, KM_SLEEP);
+ void *buf = NULL;
dmu_object_info_t doi;
+
+ if (size > 0)
+ buf = kmem_zalloc(size, KM_SLEEP);
+
err = receive_read_payload_and_next_header(ra, size, buf);
if (err != 0) {
kmem_free(buf, size);