linux-stable/net/can
Oliver Hartkopp 514ac99c64 can: fix multiple delivery of a single CAN frame for overlapping CAN filters
The CAN_RAW socket can set multiple CAN identifier specific filters that lead
to multiple filters in the af_can.c filter processing. These filters are
indenpendent from each other which leads to logical OR'ed filters when applied.

This patch makes sure that every CAN frame which is filtered for a specific
socket is only delivered once to the user space. This is independent from the
number of matching CAN filters of this socket.

As the raw_rcv() function is executed from NET_RX softirq the introduced
variables are implemented as per-CPU variables to avoid extensive locking at
CAN frame reception time.

Signed-off-by: Oliver Hartkopp <socketcan@hartkopp.net>
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
2015-04-01 11:27:41 +02:00
..
af_can.c can: add missing initialisations in CAN related skbuffs 2015-03-09 10:22:24 +01:00
af_can.h can: add hash based access to single EFF frame filters 2014-05-19 09:38:24 +02:00
bcm.c net: Remove iocb argument from sendmsg and recvmsg 2015-03-02 13:06:31 -05:00
gw.c netlink: make nlmsg_end() and genlmsg_end() void 2015-01-18 01:03:45 -05:00
Kconfig can: Kconfig: switch on all CAN protocolls by default 2013-01-26 16:58:58 +01:00
Makefile can-gw: add netlink based CAN routing 2011-09-16 17:37:51 -04:00
proc.c can: add hash based access to single EFF frame filters 2014-05-19 09:38:24 +02:00
raw.c can: fix multiple delivery of a single CAN frame for overlapping CAN filters 2015-04-01 11:27:41 +02:00