tfm = crypto_alloc_tfm(cipher, CRYPTO_TFM_MODE_CBC); 
tfm = crypto_alloc_tfm(cipher, CRYPTO_TFM_MODE_CBC | CRYPTO_TFM_REQ_MAY_SLEEP); 
cryptoloop_init(struct loop_device *lo, const struct loop_info64 *info){	int err = -EINVAL;	char cms[LO_NAME_SIZE];			/* cipher-mode string */	char *cipher;	char *mode;	char *cmsp = cms;			/* c-m string pointer */	struct crypto_tfm *tfm = NULL;	/* encryption breaks for non sector aligned offsets */	if (info->lo_offset % LOOP_IV_SECTOR_SIZE)		goto out;	strncpy(cms, info->lo_crypt_name, LO_NAME_SIZE);	cms[LO_NAME_SIZE - 1] = 0;	cipher = strsep(&cmsp, "-");	mode = strsep(&cmsp, "-");	if (mode == NULL || strcmp(mode, "cbc") == 0)		tfm = crypto_alloc_tfm(cipher, CRYPTO_TFM_MODE_CBC);	else if (strcmp(mode, "ecb") == 0)		tfm = crypto_alloc_tfm(cipher, CRYPTO_TFM_MODE_ECB);	if (tfm == NULL)		return -EINVAL;	err = tfm->crt_u.cipher.cit_setkey(tfm, info->lo_encrypt_key,					   info->lo_encrypt_key_size);		if (err != 0)		goto out_free_tfm;	lo->key_data = tfm;	return 0; out_free_tfm:	crypto_free_tfm(tfm); out:	return err;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/eb6f1160ddb2fdadf50f350da79d0796c37f17e2/cryptoloop.c/clean/drivers/block/cryptoloop.c