can: deny filterlist access on non-CAN interfaces
In commit 20dd3850bc
"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().
Signed-off-by: Oliver Hartkopp <oliver@hartkopp.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
44298ec0f2
commit
8b64056dac
|
@ -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) */
|
/* insert new receiver (dev,canid,mask) -> (func,data) */
|
||||||
|
|
||||||
|
if (dev && dev->type != ARPHRD_CAN)
|
||||||
|
return -ENODEV;
|
||||||
|
|
||||||
r = kmem_cache_alloc(rcv_cache, GFP_KERNEL);
|
r = kmem_cache_alloc(rcv_cache, GFP_KERNEL);
|
||||||
if (!r)
|
if (!r)
|
||||||
return -ENOMEM;
|
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 hlist_node *next;
|
||||||
struct dev_rcv_lists *d;
|
struct dev_rcv_lists *d;
|
||||||
|
|
||||||
|
if (dev && dev->type != ARPHRD_CAN)
|
||||||
|
return;
|
||||||
|
|
||||||
spin_lock(&can_rcvlists_lock);
|
spin_lock(&can_rcvlists_lock);
|
||||||
|
|
||||||
d = find_dev_rcv_lists(dev);
|
d = find_dev_rcv_lists(dev);
|
||||||
|
|
Loading…
Reference in New Issue