can: deny filterlist access on non-CAN interfaces
Subsystems (3)
Oliver Hartkopp
maintainerPATCH 1/1 can: deny filterlist access on non-CAN interfaces
In commit 20dd3850bcf860561496827b711fa10fecf6e787 "can: Speed up CAN frame receiption by using ml_priv" the formerly used hlist of receiver lists for each CAN netdevice has been replaced.
The hlist content ensured only CAN netdevices to be accessed by the can_rx_(un)register() functions which accidently dropped away together with the hlist receiver implementation.
This patch re-introduces the check for CAN netdevices in can_rx_(un)register().
---
net/can/af_can.c +6 -0
@@ -415,6 +415,9 @@ int can_rx_register(struct net_device *dev, canid_t can_id, canid_t mask,/* insert new receiver (dev,canid,mask) -> (func,data) */ +if (dev && dev->type !=ARPHRD_CAN ) +return -ENODEV ; + r =kmem_cache_alloc (rcv_cache,GFP_KERNEL );if (!r)return -ENOMEM ;
@@ -478,6 +481,9 @@ 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 (dev && dev->type !=ARPHRD_CAN ) +return ; +spin_lock (&can_rcvlists_lock); d =find_dev_rcv_lists (dev);
From: Oliver Hartkopp <[email protected]>
Date: Tue, 26 Jan 2010 14:51:59 +0100
Quoted 11 lines
In commit
20dd3850bcf860561496827b711fa10fecf6e787"can: Speed up CAN frame receiption by usingml_priv" the formerly used hlist of receiver lists for each CAN netdevice has been replaced.The hlist content ensured only CAN netdevices to be accessed by the can_rx_(un)register() functions which accidently dropped away together with the hlist receiver implementation.
This patch re-introduces the check for CAN netdevices in can_rx_(un)register().
Signed-off-by Oliver Hartkopp <[email protected]>
Applied, thanks Oliver.