If nl_pool_alloc() failed, then 'dump' was not initialized at all and further use of the dump would access uninitialized data, probably causing a crash.
Found by inspection. Signed-off-by: Ben Pfaff <b...@nicira.com> --- lib/netlink-socket.c | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/lib/netlink-socket.c b/lib/netlink-socket.c index 378e719..e36100d 100644 --- a/lib/netlink-socket.c +++ b/lib/netlink-socket.c @@ -702,15 +702,14 @@ nl_sock_drain(struct nl_sock *sock) void nl_dump_start(struct nl_dump *dump, int protocol, const struct ofpbuf *request) { - int status = nl_pool_alloc(protocol, &dump->sock); - - if (status) { - return; - } + int status; nl_msg_nlmsghdr(request)->nlmsg_flags |= NLM_F_DUMP | NLM_F_ACK; - status = nl_sock_send__(dump->sock, request, - nl_sock_allocate_seq(dump->sock, 1), true); + status = nl_pool_alloc(protocol, &dump->sock); + if (!status) { + status = nl_sock_send__(dump->sock, request, + nl_sock_allocate_seq(dump->sock, 1), true); + } atomic_init(&dump->status, status << 1); dump->nl_seq = nl_msg_nlmsghdr(request)->nlmsg_seq; dump->status_seq = seq_create(); -- 1.7.10.4 _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev