bridge: Fix crash with vlan filtering and tcpdump
authorVlad Yasevich <vyasevic@redhat.com>
Fri, 28 Mar 2014 01:51:18 +0000 (21:51 -0400)
committerDavid S. Miller <davem@davemloft.net>
Fri, 28 Mar 2014 21:14:02 +0000 (17:14 -0400)
commitfc92f745f8d0d3736ce5afb00a905d7cc61f9c46
tree606412dc5f865c5e2b11b6def1b75eca213aca30
parent53d6471cef17262d3ad1c7ce8982a234244f68ec
bridge: Fix crash with vlan filtering and tcpdump

When the vlan filtering is enabled on the bridge, but
the filter is not configured on the bridge device itself,
running tcpdump on the bridge device will result in a
an Oops with NULL pointer dereference.  The reason
is that br_pass_frame_up() will bypass the vlan
check because promisc flag is set.  It will then try
to get the table pointer and process the packet based
on the table.  Since the table pointer is NULL, we oops.
Catch this special condition in br_handle_vlan().

Reported-by: Toshiaki Makita <makita.toshiaki@lab.ntt.co.jp>
CC: Toshiaki Makita <makita.toshiaki@lab.ntt.co.jp>
Signed-off-by: Vlad Yasevich <vyasevic@redhat.com>
Acked-by: Toshiaki Makita <makita.toshiaki@lab.ntt.co.jp>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/bridge/br_input.c
net/bridge/br_vlan.c