+ struct ll_crypto_cipher *tfm;
+ struct scatterlist sd = {
+ .page = virt_to_page(d),
+ .offset = (unsigned long)(d) % CFS_PAGE_SIZE,
+ .length = 16,
+ };
+ struct scatterlist ss = {
+ .page = virt_to_page(s),
+ .offset = (unsigned long)(s) % CFS_PAGE_SIZE,
+ .length = 16,
+ };
+ struct blkcipher_desc desc;
+ unsigned int min;
+ int rc;
+ ENTRY;
+
+ tfm = ll_crypto_alloc_blkcipher("aes", 0, 0 );
+ if (tfm == NULL) {
+ CERROR("failed to load transform for aes\n");
+ RETURN(-EFAULT);
+ }
+
+ min = ll_crypto_tfm_alg_min_keysize(tfm);
+ if (keylen < min) {
+ CERROR("keylen at least %d bits for aes\n", min * 8);
+ GOTO(out, rc = -EINVAL);
+ }
+
+ rc = ll_crypto_blkcipher_setkey(tfm, key, min);
+ if (rc) {
+ CERROR("failed to setting key for aes\n");
+ GOTO(out, rc);
+ }
+
+ desc.tfm = tfm;
+ desc.info = NULL;
+ desc.flags = 0;
+ rc = ll_crypto_blkcipher_encrypt(&desc, &sd, &ss, 16);
+ if (rc) {
+ CERROR("failed to encrypt for aes\n");
+ GOTO(out, rc);
+ }
+
+ EXIT;