DF-1636 / fix.diff
diff --git a/sys/dev/disk/dm/crypt/dm_target_crypt.c b/sys/dev/disk/dm/crypt/dm_target_crypt.c --- a/sys/dev/disk/dm/crypt/dm_target_crypt.c +++ b/sys/dev/disk/dm/crypt/dm_target_crypt.c @@ -492,13 +492,16 @@ if ((priv->pdev = dm_pdev_insert(dev)) == NULL) { kprintf("dm_target_crypt: dm_pdev_insert failed\n"); kfree(status_str, M_DMCRYPT); + kfree(priv, M_DMCRYPT); return ENOENT; } priv->crypto_cipher = dmtc_find_crypto_cipher(crypto_alg, crypto_mode, klen_in_bits); priv->crypto_klen = klen_in_bits; - if (priv->crypto_cipher == NULL) + if (priv->crypto_cipher == NULL) { + kfree(priv, M_DMCRYPT); goto notsup; + } kprintf("dm_target_crypt: using crypto_cipher: %s\n", cryptoapi_cipher_get_description(priv->crypto_cipher)); |