diff options
author | Pavel Snajdr <[email protected]> | 2020-09-03 17:38:16 +0200 |
---|---|---|
committer | Brian Behlendorf <[email protected]> | 2020-09-15 15:55:03 -0700 |
commit | c95625769db24df81806d8f41bbd34b1da36a5ca (patch) | |
tree | fe676b1d48c8ad19da81431025eaa21162b31e87 /module/zfs/spa.c | |
parent | 5797d7cc4c80e279002b1511fe4d7151e955e59d (diff) |
Fix stack frame size: spa_livelist_delete_cb()
Reviewed-by: Ryan Moeller <[email protected]>
Reviewed-by: Brian Behlendorf <[email protected]>
Signed-off-by: Pavel Snajdr <[email protected]>
Closes #10879
Diffstat (limited to 'module/zfs/spa.c')
-rw-r--r-- | module/zfs/spa.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/module/zfs/spa.c b/module/zfs/spa.c index 0bf0e366a..8c662f6b0 100644 --- a/module/zfs/spa.c +++ b/module/zfs/spa.c @@ -2497,11 +2497,12 @@ spa_livelist_delete_cb(void *arg, zthr_t *z) VERIFY0(dsl_get_next_livelist_obj(mos, zap_obj, &ll_obj)); VERIFY0(zap_count(mos, ll_obj, &count)); if (count > 0) { - dsl_deadlist_t ll = { 0 }; + dsl_deadlist_t *ll; dsl_deadlist_entry_t *dle; bplist_t to_free; - dsl_deadlist_open(&ll, mos, ll_obj); - dle = dsl_deadlist_first(&ll); + ll = kmem_zalloc(sizeof (dsl_deadlist_t), KM_SLEEP); + dsl_deadlist_open(ll, mos, ll_obj); + dle = dsl_deadlist_first(ll); ASSERT3P(dle, !=, NULL); bplist_create(&to_free); int err = dsl_process_sub_livelist(&dle->dle_bpobj, &to_free, @@ -2509,7 +2510,7 @@ spa_livelist_delete_cb(void *arg, zthr_t *z) if (err == 0) { sublist_delete_arg_t sync_arg = { .spa = spa, - .ll = &ll, + .ll = ll, .key = dle->dle_mintxg, .to_free = &to_free }; @@ -2524,7 +2525,8 @@ spa_livelist_delete_cb(void *arg, zthr_t *z) } bplist_clear(&to_free); bplist_destroy(&to_free); - dsl_deadlist_close(&ll); + dsl_deadlist_close(ll); + kmem_free(ll, sizeof (dsl_deadlist_t)); } else { livelist_delete_arg_t sync_arg = { .spa = spa, |