Skip to content

Commit

Permalink
can: deny filterlist access on non-CAN interfaces
Browse files Browse the repository at this point in the history
In commit 20dd385 "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>
  • Loading branch information
Oliver Hartkopp authored and David S. Miller committed Feb 2, 2010
1 parent 44298ec commit 8b64056
Showing 1 changed file with 6 additions and 0 deletions.
6 changes: 6 additions & 0 deletions net/can/af_can.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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);
Expand Down

0 comments on commit 8b64056

Please sign in to comment.