static void prism2_wep_deinit(void *priv) { struct prism2_wep_data *_priv = priv; if (_priv) { crypto_free_sync_skcipher(_priv->tx_tfm); crypto_free_sync_skcipher(_priv->rx_tfm); } kfree(priv); }
static void *prism2_wep_init(int keyidx) { struct prism2_wep_data *priv; priv = kzalloc(sizeof(*priv), GFP_KERNEL); if (!priv) return NULL; priv->key_idx = keyidx; priv->tx_tfm = crypto_alloc_sync_skcipher("ecb(arc4)", 0, 0); if (IS_ERR(priv->tx_tfm)) goto free_priv; priv->rx_tfm = crypto_alloc_sync_skcipher("ecb(arc4)", 0, 0); if (IS_ERR(priv->rx_tfm)) goto free_tx; /* start WEP IV from a random value */ get_random_bytes(&priv->iv, 4); return priv; free_tx: crypto_free_sync_skcipher(priv->tx_tfm); free_priv: kfree(priv); return NULL; }
static void p8_aes_ctr_exit(struct crypto_tfm *tfm) { struct p8_aes_ctr_ctx *ctx = crypto_tfm_ctx(tfm); if (ctx->fallback) { crypto_free_sync_skcipher(ctx->fallback); ctx->fallback = NULL; } }
static void qce_ablkcipher_exit(struct crypto_tfm *tfm) { struct qce_cipher_ctx *ctx = crypto_tfm_ctx(tfm); crypto_free_sync_skcipher(ctx->fallback); }