ocf-linux: version bump to 20110720
[openwrt/svn-archive/archive.git] / target / linux / generic / files / crypto / ocf / talitos / talitos.c
index 322f2ea8b7f9e6992ec3c6e6185807bf1a16fe44..c4bc8c0fdb4db3acbbbc4aeb22d59e51f4b23161 100644 (file)
  */
 
 #include <linux/version.h>
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,33))
-#include <generated/autoconf.h>
-#else
-#include <linux/autoconf.h>
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,38) && !defined(AUTOCONF_INCLUDED)
+#include <linux/config.h>
 #endif
 #include <linux/module.h>
 #include <linux/init.h>
 #include <linux/dma-mapping.h>  /* dma_map_single() */
 #include <linux/moduleparam.h>
 
-#include <linux/version.h>
 #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,15)
 #include <linux/platform_device.h>
 #endif
@@ -421,10 +418,6 @@ talitos_newsession(device_t dev, u_int32_t *sidp, struct cryptoini *cri)
        ses->ses_used = 1;
 
        if (encini) {
-               /* get an IV */
-               /* XXX may read fewer than requested */
-               read_random(ses->ses_iv, sizeof(ses->ses_iv));
-
                ses->ses_klen = (encini->cri_klen + 7) / 8;
                memcpy(ses->ses_key, encini->cri_key, ses->ses_klen);
                if (macini) {
@@ -514,6 +507,7 @@ talitos_process(device_t dev, struct cryptop *crp, int hint)
        int hmac_key, hmac_data, cipher_iv, cipher_key, 
                in_fifo, out_fifo, cipher_iv_out;
        static int chsel = -1;
+       u_int32_t rand_iv[4];
 
        DPRINTF("%s()\n", __FUNCTION__);
 
@@ -755,7 +749,7 @@ talitos_process(device_t dev, struct cryptop *crp, int hint)
                        if (enccrd->crd_flags & CRD_F_IV_EXPLICIT)
                                iv = enccrd->crd_iv;
                        else
-                               iv = (caddr_t) ses->ses_iv;
+                               read_random((iv = (caddr_t) rand_iv), sizeof(rand_iv));
                        if ((enccrd->crd_flags & CRD_F_IV_PRESENT) == 0) {
                                crypto_copyback(crp->crp_flags, crp->crp_buf,
                                    enccrd->crd_inject, ivsize, iv);
@@ -764,9 +758,8 @@ talitos_process(device_t dev, struct cryptop *crp, int hint)
                        td->hdr |= TALITOS_DIR_INBOUND; 
                        if (enccrd->crd_flags & CRD_F_IV_EXPLICIT) {
                                iv = enccrd->crd_iv;
-                               bcopy(enccrd->crd_iv, iv, ivsize);
                        } else {
-                               iv = (caddr_t) ses->ses_iv;
+                               iv = (caddr_t) rand_iv;
                                crypto_copydata(crp->crp_flags, crp->crp_buf,
                                    enccrd->crd_inject, ivsize, iv);
                        }