summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOliver Hartkopp <oliver@hartkopp.net>2008-12-05 00:01:08 +0100
committerDavid S. Miller <davem@davemloft.net>2008-12-05 00:01:08 +0100
commitf706644d55f90e8306d87060168fef33804d6dd9 (patch)
treefb3755398c41cc64c253bcc87ad96169bff67362
parentATM: CVE-2008-5079: duplicate listen() on socket corrupts the vcc table (diff)
downloadlinux-f706644d55f90e8306d87060168fef33804d6dd9.tar.xz
linux-f706644d55f90e8306d87060168fef33804d6dd9.zip
can: omit received RTR frames for single ID filter lists
Since commit d253eee20195b25e298bf162a6e72f14bf4803e5 the single CAN identifier filter lists handle only non-RTR CAN frames. So we need to omit the check of these filter lists when receiving RTR CAN frames. Signed-off-by: Oliver Hartkopp <oliver@hartkopp.net> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--net/can/af_can.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/net/can/af_can.c b/net/can/af_can.c
index d8173e50cb87..3dadb338addd 100644
--- a/net/can/af_can.c
+++ b/net/can/af_can.c
@@ -622,7 +622,10 @@ static int can_rcv_filter(struct dev_rcv_lists *d, struct sk_buff *skb)
}
}
- /* check CAN_ID specific entries */
+ /* check filterlists for single non-RTR can_ids */
+ if (can_id & CAN_RTR_FLAG)
+ return matches;
+
if (can_id & CAN_EFF_FLAG) {
hlist_for_each_entry_rcu(r, n, &d->rx[RX_EFF], list) {
if (r->can_id == can_id) {