DF-1964 / fix.diff
diff --git a/sys/dev/disk/dm/delay/dm_target_delay.c b/sys/dev/disk/dm/delay/dm_target_delay.c --- a/sys/dev/disk/dm/delay/dm_target_delay.c +++ b/sys/dev/disk/dm/delay/dm_target_delay.c @@ -112,6 +112,9 @@ ret = _init(&tdc->write, argv, 1); if (ret) { + /* Tear down the read worker thread that _init(&tdc->read,...) + * already started; otherwise it would tsleep on a freed di. */ + _destroy(&tdc->read); dm_pdev_decr(tdc->read.pdev); kfree(tdc, M_DMDELAY); return ret; |