• Pravin B Shelar's avatar
    openvswitch: Fix net exit. · 7b4577a9
    Pravin B Shelar authored
    Open vSwitch allows moving internal vport to different namespace
    while still connected to the bridge. But when namespace deleted
    OVS does not detach these vports, that results in dangling
    pointer to netdevice which causes kernel panic as follows.
    This issue is fixed by detaching all ovs ports from the deleted
    namespace at net-exit.
    BUG: unable to handle kernel NULL pointer dereference at 0000000000000028
    IP: [<ffffffffa0aadaa5>] ovs_vport_locate+0x35/0x80 [openvswitch]
    Oops: 0000 [#1] SMP
    Call Trace:
     [<ffffffffa0aa6391>] lookup_vport+0x21/0xd0 [openvswitch]
     [<ffffffffa0aa65f9>] ovs_vport_cmd_get+0x59/0xf0 [openvswitch]
     [<ffffffff8167e07c>] genl_family_rcv_msg+0x1bc/0x3e0
     [<ffffffff8167e319>] genl_rcv_msg+0x79/0xc0
     [<ffffffff8167d919>] netlink_rcv_skb+0xb9/0xe0
     [<ffffffff8167deac>] genl_rcv+0x2c/0x40
     [<ffffffff8167cffd>] netlink_unicast+0x12d/0x1c0
     [<ffffffff8167d3da>] netlink_sendmsg+0x34a/0x6b0
     [<ffffffff8162e140>] sock_sendmsg+0xa0/0xe0
     [<ffffffff8162e5e8>] ___sys_sendmsg+0x408/0x420
     [<ffffffff8162f541>] __sys_sendmsg+0x51/0x90
     [<ffffffff8162f592>] SyS_sendmsg+0x12/0x20
     [<ffffffff81764ee9>] system_call_fastpath+0x12/0x17
    Reported-by: default avatarAssaf Muller <amuller@redhat.com>
    Fixes: 46df7b81("openvswitch: Add support for network namespaces.")
    Signed-off-by: default avatarPravin B Shelar <pshelar@nicira.com>
    Reviewed-by: default avatarThomas Graf <tgraf@noironetworks.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
datapath.c 56 KB