diff options
author | mm <mm@FreeBSD.org> | 2010-05-21 08:55:18 +0000 |
---|---|---|
committer | mm <mm@FreeBSD.org> | 2010-05-21 08:55:18 +0000 |
commit | c5161d1ad5baa751d09569af1e5c06e990e4edaa (patch) | |
tree | 272d85c82790236966a4bb4f92bf027f68719113 /sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_traverse.c | |
parent | c47ee5a2cae1d2e03f929710d8ef0ac7e14b81c6 (diff) | |
download | FreeBSD-src-c5161d1ad5baa751d09569af1e5c06e990e4edaa.zip FreeBSD-src-c5161d1ad5baa751d09569af1e5c06e990e4edaa.tar.gz |
Fix stack overflow in zfs send.
OpenSolaris onnv-revision: 8012:8ea30813950f
Approved by: pjd, delphij (mentor)
Obtained from: OpenSolaris (Bug ID 6765626)
MFC after: 3 days
Diffstat (limited to 'sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_traverse.c')
-rw-r--r-- | sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_traverse.c | 7 |
1 files changed, 1 insertions, 6 deletions
diff --git a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_traverse.c b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_traverse.c index 15e789f..ef0284d 100644 --- a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_traverse.c +++ b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_traverse.c @@ -134,6 +134,7 @@ static int traverse_visitbp(struct traverse_data *td, const dnode_phys_t *dnp, arc_buf_t *pbuf, blkptr_t *bp, const zbookmark_t *zb) { + zbookmark_t czb; int err = 0; arc_buf_t *buf = NULL; struct prefetch_data *pd = td->td_pfd; @@ -179,8 +180,6 @@ traverse_visitbp(struct traverse_data *td, const dnode_phys_t *dnp, /* recursively visitbp() blocks below this */ cbp = buf->b_data; for (i = 0; i < epb; i++, cbp++) { - zbookmark_t czb; - SET_BOOKMARK(&czb, zb->zb_objset, zb->zb_object, zb->zb_level - 1, zb->zb_blkid * epb + i); @@ -203,8 +202,6 @@ traverse_visitbp(struct traverse_data *td, const dnode_phys_t *dnp, dnp = buf->b_data; for (i = 0; i < epb && err == 0; i++, dnp++) { for (j = 0; j < dnp->dn_nblkptr; j++) { - zbookmark_t czb; - SET_BOOKMARK(&czb, zb->zb_objset, zb->zb_blkid * epb + i, dnp->dn_nlevels - 1, j); @@ -229,8 +226,6 @@ traverse_visitbp(struct traverse_data *td, const dnode_phys_t *dnp, traverse_zil(td, &osp->os_zil_header); for (j = 0; j < osp->os_meta_dnode.dn_nblkptr; j++) { - zbookmark_t czb; - SET_BOOKMARK(&czb, zb->zb_objset, 0, osp->os_meta_dnode.dn_nlevels - 1, j); err = traverse_visitbp(td, &osp->os_meta_dnode, buf, |