blkcipher_walk_init(&walk, dst, src, nbytes);
        err = blkcipher_walk_virt(desc, &walk);
-       memcpy(op->iv, walk.iv, AES_IV_LENGTH);
+       op->iv = walk.iv;
 
        while((nbytes = walk.nbytes)) {
                op->src = walk.src.virt.addr,
                err = blkcipher_walk_done(desc, &walk, nbytes);
        }
 
-       memcpy(walk.iv, op->iv, AES_IV_LENGTH);
        return err;
 }
 
 
        blkcipher_walk_init(&walk, dst, src, nbytes);
        err = blkcipher_walk_virt(desc, &walk);
-       memcpy(op->iv, walk.iv, AES_IV_LENGTH);
+       op->iv = walk.iv;
 
        while((nbytes = walk.nbytes)) {
                op->src = walk.src.virt.addr,
                err = blkcipher_walk_done(desc, &walk, nbytes);
        }
 
-       memcpy(walk.iv, op->iv, AES_IV_LENGTH);
        return err;
 }