skcipher_request_set_tfm(&rctx->subreq, tfm);
 
-       if (req->cryptlen == AES_BLOCK_SIZE)
+       if (req->cryptlen <= AES_BLOCK_SIZE) {
+               if (req->cryptlen < AES_BLOCK_SIZE)
+                       return -EINVAL;
                cbc_blocks = 1;
+       }
 
        if (cbc_blocks > 0) {
                unsigned int blocks;
 
        skcipher_request_set_tfm(&rctx->subreq, tfm);
 
-       if (req->cryptlen == AES_BLOCK_SIZE)
+       if (req->cryptlen <= AES_BLOCK_SIZE) {
+               if (req->cryptlen < AES_BLOCK_SIZE)
+                       return -EINVAL;
                cbc_blocks = 1;
+       }
 
        if (cbc_blocks > 0) {
                unsigned int blocks;
                .cra_driver_name        = "__cts-cbc-aes-" MODE,
                .cra_priority           = PRIO,
                .cra_flags              = CRYPTO_ALG_INTERNAL,
-               .cra_blocksize          = 1,
+               .cra_blocksize          = AES_BLOCK_SIZE,
                .cra_ctxsize            = sizeof(struct crypto_aes_ctx),
                .cra_module             = THIS_MODULE,
        },
        .min_keysize    = AES_MIN_KEY_SIZE,
        .max_keysize    = AES_MAX_KEY_SIZE,
        .ivsize         = AES_BLOCK_SIZE,
-       .chunksize      = AES_BLOCK_SIZE,
        .walksize       = 2 * AES_BLOCK_SIZE,
        .setkey         = skcipher_aes_setkey,
        .encrypt        = cts_cbc_encrypt,