]> rtime.felk.cvut.cz Git - lincan.git/blobdiff - lincan/src/usbcan.c
BKL use and local kthread implementation is obsolete for 2.6.17+ kernel.
[lincan.git] / lincan / src / usbcan.c
index 70e0a84609f068999affc6a7e3654e9bc6d4e425..54f3dcb7bf41de21e7d2dbc996decc2c01b1738d 100644 (file)
 #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,20))
  #include <linux/freezer.h>
 #endif
-#include <linux/smp_lock.h>
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,38))
+  #include <linux/smp_lock.h>
+#endif
+#include <linux/module.h>
 
 static int usbcan_probe(struct usb_interface *interface, const struct usb_device_id *id);
 static void usbcan_disconnect(struct usb_interface *interface);
@@ -1508,12 +1511,16 @@ static void usbcan_disconnect(struct usb_interface *interface)
        int j;
 
        /* prevent more I/O from starting */
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,38))
        lock_kernel();
+#endif
 
        usbdevs = usb_get_intfdata(interface);
        if (usbdevs==NULL){
                CANMSG("USBCAN device seems to be already removed\n");
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,38))
                unlock_kernel();
+#endif
                return;
        }
        usb_set_intfdata(interface, NULL);
@@ -1526,7 +1533,9 @@ static void usbcan_disconnect(struct usb_interface *interface)
                mutex_unlock(&usbdevs->devs[j]->io_mutex);
        }
 
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,38))
        unlock_kernel();
+#endif
 
 #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,10))
        kref_put(&usbdevs->candev->refcount,release_device);