]> rtime.felk.cvut.cz Git - socketcan-devel.git/blobdiff - kernel/2.6/net/can/af_can.c
The hlist content ensured only CAN netdevices to be accessed by the
[socketcan-devel.git] / kernel / 2.6 / net / can / af_can.c
index 14dbba5b51aa70ce25c9a6ab9ce45c7ba5567175..4d8479d744886778bae125a73b6d472a784a24ce 100644 (file)
@@ -537,6 +537,11 @@ int can_rx_register(struct net_device *dev, canid_t can_id, canid_t mask,
 
        /* insert new receiver  (dev,canid,mask) -> (func,data) */
 
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,26)
+       if (dev && dev->type != ARPHRD_CAN)
+               return -ENODEV;
+#endif
+
        r = kmem_cache_alloc(rcv_cache, GFP_KERNEL);
        if (!r)
                return -ENOMEM;
@@ -610,6 +615,11 @@ void can_rx_unregister(struct net_device *dev, canid_t can_id, canid_t mask,
        struct hlist_node *next;
        struct dev_rcv_lists *d;
 
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,26)
+       if (dev && dev->type != ARPHRD_CAN)
+               return;
+#endif
+
        spin_lock(&can_rcvlists_lock);
 
        d = find_dev_rcv_lists(dev);