diff options
author | Oliver Hartkopp <socketcan@hartkopp.net> | 2015-04-01 07:50:28 +0200 |
---|---|---|
committer | Marc Kleine-Budde <mkl@pengutronix.de> | 2015-04-01 11:27:41 +0200 |
commit | 514ac99c64b22d83b52dfee3b8becaa69a92bc4a (patch) | |
tree | dc44e61b13c9c7279ad7b5be1195f5cebeb422c2 /Documentation/networking | |
parent | a0bc163a7cf2ceb413a76cfd7149c6591db829ea (diff) | |
download | op-kernel-dev-514ac99c64b22d83b52dfee3b8becaa69a92bc4a.zip op-kernel-dev-514ac99c64b22d83b52dfee3b8becaa69a92bc4a.tar.gz |
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>
Diffstat (limited to 'Documentation/networking')
0 files changed, 0 insertions, 0 deletions