dpif-linux: Recheck the socket pointer existence before getting its pid.
authorAlex Wang <alexw@nicira.com>
Tue, 8 Jul 2014 04:58:33 +0000 (21:58 -0700)
committerAlex Wang <alexw@nicira.com>
Tue, 8 Jul 2014 05:14:09 +0000 (22:14 -0700)
commit17f2748d245e74249d46a590da0f7456ebb27e7c
tree53bfb2394823d4737256261a386315ed1e4ef996
parentb44d9db7befde9498d2e655c9a5d8c16d6df8e6a
dpif-linux: Recheck the socket pointer existence before getting its pid.

This commit fixes a race between port deletion and flow miss handling.
More specifically, a port could be removed by main thread while
the handler thread is handling the flow miss from it.  If the flow
requires slow path action, the handler thread will try querying a pid
from port's socket.  Since the port has been deleted, the query will
cause a dereference of NULL socket pointer.

This commit makes the handler thread recheck the socket pointer before
dereferencing it.

VMware-BZ: 1251981

Reported-by: Pratap Reddy <preddy@nicira.com>
Signed-off-by: Alex Wang <alexw@nicira.com>
Acked-by: Joe Stringer <joestringer@nicira.com>
lib/dpif-linux.c