X-Git-Url: https://git.camperquake.de/gitweb.cgi?a=blobdiff_plain;f=module%2Fzfs%2Fspa_history.c;h=ce7d378c6ff97e843fb53e3aea028c9eb7b635dc;hb=00b46022c676e402e3f33ce93ee2983bbad2c46f;hp=a65f16bccddea82e7f56e37d05e27c87f8e87cf3;hpb=0bc8fd7884fc603eb7646c43b1fc0b18e37e7d62;p=zfs.git diff --git a/module/zfs/spa_history.c b/module/zfs/spa_history.c index a65f16b..ce7d378 100644 --- a/module/zfs/spa_history.c +++ b/module/zfs/spa_history.c @@ -428,6 +428,7 @@ log_internal(history_internal_events_t event, spa_t *spa, dmu_tx_t *tx, const char *fmt, va_list adx) { history_arg_t *ha; + va_list adx_copy; /* * If this is part of creating a pool, not everything is @@ -437,11 +438,9 @@ log_internal(history_internal_events_t event, spa_t *spa, return; ha = kmem_alloc(sizeof (history_arg_t), KM_SLEEP); - ha->ha_history_str = kmem_alloc(vsnprintf(NULL, 0, fmt, adx) + 1, - KM_SLEEP); - - (void) vsprintf(ha->ha_history_str, fmt, adx); - + va_copy(adx_copy, adx); + ha->ha_history_str = kmem_vasprintf(fmt, adx_copy); + va_end(adx_copy); ha->ha_log_type = LOG_INTERNAL; ha->ha_event = event; ha->ha_zone = NULL;