diff options
author | Paul Zuchowski <[email protected]> | 2019-03-06 12:50:55 -0500 |
---|---|---|
committer | Brian Behlendorf <[email protected]> | 2019-03-06 09:50:55 -0800 |
commit | a73e8fdb93d24b885f0c38202a34da51013d674a (patch) | |
tree | ce23108be9aee5f492375ce034e836769654e15b /include | |
parent | 96ebc5a1a4cc57806882e4e9b38c49ba8a5bdfda (diff) |
Stack overflow in recursive bpobj_iterate_impl
The function bpobj_iterate_impl overflows the stack when bpobjs
are deeply nested. Rewrite the function to eliminate the recursion.
Reviewed-by: Serapheim Dimitropoulos <[email protected]>
Reviewed-by: Matt Ahrens <[email protected]>
Reviewed-by: Brian Behlendorf <[email protected]>
Signed-off-by: Paul Zuchowski <[email protected]>
Closes #7674
Closes #7675
Closes #7908
Diffstat (limited to 'include')
-rw-r--r-- | include/sys/dmu.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/include/sys/dmu.h b/include/sys/dmu.h index 63c51ecfb..e4c2ebc2f 100644 --- a/include/sys/dmu.h +++ b/include/sys/dmu.h @@ -740,6 +740,7 @@ struct blkptr *dmu_buf_get_blkptr(dmu_buf_t *db); * (ie. you've called dmu_tx_hold_object(tx, db->db_object)). */ void dmu_buf_will_dirty(dmu_buf_t *db, dmu_tx_t *tx); +boolean_t dmu_buf_is_dirty(dmu_buf_t *db, dmu_tx_t *tx); void dmu_buf_set_crypt_params(dmu_buf_t *db_fake, boolean_t byteorder, const uint8_t *salt, const uint8_t *iv, const uint8_t *mac, dmu_tx_t *tx); |