ocf: switch MODULE_LICENSE from BSD to "Dual BSD/GPL" to make the kernel recognize...
[openwrt/staging/wigyori.git] / target / linux / generic / files / crypto / ocf / cryptodev.c
index c1e9140a050be5a59f561cbcd0cc4c47dd8ebf0e..9a23f05c5a4c77acf3d7f40d889d7fb9885fe86b 100644 (file)
@@ -39,7 +39,8 @@
 __FBSDID("$FreeBSD: src/sys/opencrypto/cryptodev.c,v 1.34 2007/05/09 19:37:02 gnn Exp $");
  */
 
-#ifndef AUTOCONF_INCLUDED
+#include <linux/version.h>
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,38) && !defined(AUTOCONF_INCLUDED)
 #include <linux/config.h>
 #endif
 #include <linux/types.h>
@@ -57,7 +58,6 @@ __FBSDID("$FreeBSD: src/sys/opencrypto/cryptodev.c,v 1.34 2007/05/09 19:37:02 gn
 #include <linux/file.h>
 #include <linux/mount.h>
 #include <linux/miscdevice.h>
-#include <linux/version.h>
 #include <asm/uaccess.h>
 
 #include <cryptodev.h>
@@ -977,10 +977,16 @@ cryptodev_open(struct inode *inode, struct file *filp)
        struct fcrypt *fcr;
 
        dprintk("%s()\n", __FUNCTION__);
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,35)
+       /*
+        * on 2.6.35 private_data points to a miscdevice structure, we override
+        * it,  which is currently safe to do.
+        */
        if (filp->private_data) {
-               printk("cryptodev: Private data already exists !\n");
-               return(0);
+               printk("cryptodev: Private data already exists - %p!\n", filp->private_data);
+               return(-ENODEV);
        }
+#endif
 
        fcr = kmalloc(sizeof(*fcr), GFP_KERNEL);
        if (!fcr) {
@@ -1058,6 +1064,6 @@ cryptodev_exit(void)
 module_init(cryptodev_init);
 module_exit(cryptodev_exit);
 
-MODULE_LICENSE("BSD");
+MODULE_LICENSE("Dual BSD/GPL");
 MODULE_AUTHOR("David McCullough <david_mccullough@mcafee.com>");
 MODULE_DESCRIPTION("Cryptodev (user interface to OCF)");