dpif-netdev: fix dp_netdev_free()
authorDaniele Di Proietto <ddiproietto@vmware.com>
Fri, 3 Oct 2014 22:04:15 +0000 (15:04 -0700)
committerJarno Rajahalme <jrajahalme@nicira.com>
Fri, 3 Oct 2014 22:04:15 +0000 (15:04 -0700)
commit88ace79b3e0e7808338e5c70b7554a59f4bc3600
tree183cc9bdaa7f94c4f477ffb223cbc6812ee37ea7
parent43f9ac0aa92656272f73e923f7424fe07ec56988
dpif-netdev: fix dp_netdev_free()

dp_netdev_free() must free 'dp->upcall_rwlock', but when upcalls are
disabled (if the datapath is being freed upcalls should be disabled)
'dp->upcall_rwlock' is taken and freeing it causes an assertion to
fail.

This commit takes makes sure that the upcalls are disabled and
releases 'dp->upcall_rwlock' before freeing it. A simple testcase is
added to detect the failure.

Signed-off-by: Daniele Di Proietto <ddiproietto@vmware.com>
Acked-by: Jarno Rajahalme <jrajahalme@nicira.com>
lib/dpif-netdev.c
tests/dpif-netdev.at