Index: head/sys/kern/kern_shutdown.c =================================================================== --- head/sys/kern/kern_shutdown.c +++ head/sys/kern/kern_shutdown.c @@ -1464,6 +1464,7 @@ } resid = length - rlength; memmove(di->blockbuf, (uint8_t *)base + rlength, resid); + bzero((uint8_t *)di->blockbuf + resid, di->blocksize - resid); di->kdcomp->kdc_resid = resid; return (EAGAIN); } @@ -1680,9 +1681,10 @@ error = compressor_flush(di->kdcomp->kdc_stream); if (error == EAGAIN) { /* We have residual data in di->blockbuf. */ - error = dump_write(di, di->blockbuf, 0, di->dumpoff, - di->blocksize); - di->dumpoff += di->kdcomp->kdc_resid; + error = _dump_append(di, di->blockbuf, 0, di->blocksize); + if (error == 0) + /* Compensate for _dump_append()'s adjustment. */ + di->dumpoff -= di->blocksize - di->kdcomp->kdc_resid; di->kdcomp->kdc_resid = 0; } if (error != 0)