There is no reason to keep the IV in the private structre.
This also remove a few memcpy()s

Signed-off-by: Sebastian Siewior <[EMAIL PROTECTED]>
---

Herbert, could I please squash that one into the bad one so there are no
broken commits?

diff --git a/drivers/crypto/geode-aes.c b/drivers/crypto/geode-aes.c
index 0ca92d4..061ad58 100644
--- a/drivers/crypto/geode-aes.c
+++ b/drivers/crypto/geode-aes.c
@@ -67,7 +67,7 @@ do_crypt(void *src, void *dst, int len, u32 flags)
 }
 
 static unsigned int
-geode_aes_crypt(struct geode_aes_op *op)
+geode_aes_crypt(struct geode_aes_op *op, u8 *iv)
 {
        u32 flags = 0;
        unsigned long iflags;
@@ -92,7 +92,7 @@ geode_aes_crypt(struct geode_aes_op *op)
 
        if (op->mode == AES_MODE_CBC) {
                flags |= AES_CTRL_CBC;
-               _writefield(AES_WRITEIV0_REG, op->iv);
+               _writefield(AES_WRITEIV0_REG, iv);
        }
 
        if (!(op->flags & AES_FLAGS_HIDDENKEY)) {
@@ -104,7 +104,7 @@ geode_aes_crypt(struct geode_aes_op *op)
        BUG_ON(ret);
 
        if (op->mode == AES_MODE_CBC)
-               _readfield(AES_WRITEIV0_REG, op->iv);
+               _readfield(AES_WRITEIV0_REG, iv);
 
        spin_unlock_irqrestore(&lock, iflags);
 
@@ -229,7 +229,7 @@ geode_encrypt(struct crypto_tfm *tfm, u8 *out, const u8 *in)
        op->len = AES_MIN_BLOCK_SIZE;
        op->dir = AES_DIR_ENCRYPT;
 
-       geode_aes_crypt(op);
+       geode_aes_crypt(op, NULL);
 }
 
 
@@ -250,7 +250,7 @@ geode_decrypt(struct crypto_tfm *tfm, u8 *out, const u8 *in)
        op->len = AES_MIN_BLOCK_SIZE;
        op->dir = AES_DIR_DECRYPT;
 
-       geode_aes_crypt(op);
+       geode_aes_crypt(op, NULL);
 }
 
 static int fallback_init_cip(struct crypto_tfm *tfm)
@@ -315,7 +315,6 @@ geode_cbc_decrypt(struct blkcipher_desc *desc,
 
        blkcipher_walk_init(&walk, dst, src, nbytes);
        err = blkcipher_walk_virt(desc, &walk);
-       memcpy(op->iv, walk.iv, AES_IV_LENGTH);
 
        while((nbytes = walk.nbytes)) {
                op->src = walk.src.virt.addr,
@@ -324,13 +323,12 @@ geode_cbc_decrypt(struct blkcipher_desc *desc,
                op->len = nbytes - (nbytes % AES_MIN_BLOCK_SIZE);
                op->dir = AES_DIR_DECRYPT;
 
-               ret = geode_aes_crypt(op);
+               ret = geode_aes_crypt(op, walk.iv);
 
                nbytes -= ret;
                err = blkcipher_walk_done(desc, &walk, nbytes);
        }
 
-       memcpy(walk.iv, op->iv, AES_IV_LENGTH);
        return err;
 }
 
@@ -348,7 +346,6 @@ geode_cbc_encrypt(struct blkcipher_desc *desc,
 
        blkcipher_walk_init(&walk, dst, src, nbytes);
        err = blkcipher_walk_virt(desc, &walk);
-       memcpy(op->iv, walk.iv, AES_IV_LENGTH);
 
        while((nbytes = walk.nbytes)) {
                op->src = walk.src.virt.addr,
@@ -357,12 +354,11 @@ geode_cbc_encrypt(struct blkcipher_desc *desc,
                op->len = nbytes - (nbytes % AES_MIN_BLOCK_SIZE);
                op->dir = AES_DIR_ENCRYPT;
 
-               ret = geode_aes_crypt(op);
+               ret = geode_aes_crypt(op, walk.iv);
                nbytes -= ret;
                err = blkcipher_walk_done(desc, &walk, nbytes);
        }
 
-       memcpy(walk.iv, op->iv, AES_IV_LENGTH);
        return err;
 }
 
@@ -438,7 +434,7 @@ geode_ecb_decrypt(struct blkcipher_desc *desc,
                op->len = nbytes - (nbytes % AES_MIN_BLOCK_SIZE);
                op->dir = AES_DIR_DECRYPT;
 
-               ret = geode_aes_crypt(op);
+               ret = geode_aes_crypt(op, NULL);
                nbytes -= ret;
                err = blkcipher_walk_done(desc, &walk, nbytes);
        }
@@ -468,7 +464,7 @@ geode_ecb_encrypt(struct blkcipher_desc *desc,
                op->len = nbytes - (nbytes % AES_MIN_BLOCK_SIZE);
                op->dir = AES_DIR_ENCRYPT;
 
-               ret = geode_aes_crypt(op);
+               ret = geode_aes_crypt(op, NULL);
                nbytes -= ret;
                ret =  blkcipher_walk_done(desc, &walk, nbytes);
        }
diff --git a/drivers/crypto/geode-aes.h b/drivers/crypto/geode-aes.h
index 14cc763..d6b2824 100644
--- a/drivers/crypto/geode-aes.h
+++ b/drivers/crypto/geode-aes.h
@@ -65,7 +65,6 @@ struct geode_aes_op {
        int len;
 
        u8 key[AES_KEY_LENGTH];
-       u8 iv[AES_IV_LENGTH];
 
        union {
                struct crypto_blkcipher *blk;
-- 
1.5.3.4

-
To unsubscribe from this list: send the line "unsubscribe linux-crypto" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to