Do not free uninitialized packets.
authorJarno Rajahalme <jrajahalme@nicira.com>
Tue, 17 Dec 2013 23:54:30 +0000 (15:54 -0800)
committerJarno Rajahalme <jrajahalme@nicira.com>
Tue, 17 Dec 2013 23:54:30 +0000 (15:54 -0800)
Commit da546e0 (dpif: Allow execute to modify the packet.) uninitializes
the "dpif_upcall.packet" of "struct upcall" when dpif_recv() returns error.
The packet ofpbuf is likely uninitialized in this case, hence calling
ofpbuf_uninit() on it will likely cause a SEGFAULT.

This commit fixes this bug by only uninitializing packet's ofpbuf on
successfully received upcalls.

A note warning about this is added on the comment of dpif_recv() in
dpif.c and dpif-provider.h.

Reported-by: Alex Wang <alexw@nicira.com>
Signed-off-by: Jarno Rajahalme <jrajahalme@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>

No differences found