• Nikolay Aleksandrov's avatar
    net: bridge: fix vlan tunnel dst null pointer dereference · 58e20717
    Nikolay Aleksandrov authored
    This patch fixes a tunnel_dst null pointer dereference due to lockless
    access in the tunnel egress path. When deleting a vlan tunnel the
    tunnel_dst pointer is set to NULL without waiting a grace period (i.e.
    while it's still usable) and packets egressing are dereferencing it
    without checking. Use READ/WRITE_ONCE to annotate the lockless use of
    tunnel_id, use RCU for accessing tunnel_dst and make sure it is read
    only once and checked in the egress path. The dst is already properly RCU
    protected so we don't need to do anything fancy than to make sure
    tunnel_id and tunnel_dst are read only once and checked in the egress path.
    
    Cc: stable@vger.kernel.org
    Fixes: 11538d03 ("bridge: vlan dst_metadata hooks in ingress and egress paths")
    Signed-off-by: default avatarNikolay Aleksandrov <nikolay@nvidia.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    58e20717
br_vlan_tunnel.c 4.78 KB