diff options
author | Jerry Jelinek <jerry.jelinek@joyent.com> | 2015-07-29 22:40:47 +0000 |
---|---|---|
committer | Jerry Jelinek <jerry.jelinek@joyent.com> | 2015-07-29 22:40:47 +0000 |
commit | 6f2b4ac2461254029e30e71d710eff1b5ee7799d (patch) | |
tree | 73a836f3da2fa8f3f17f9a7babb477d564041e34 | |
parent | 4e99baf7ab6449a1e3776a3c42d63db98bcc9e28 (diff) | |
download | illumos-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.c | 8 |
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); |