2
0
mirror of https://github.com/openvswitch/ovs synced 2025-08-30 22:05:19 +00:00

dpif-linux: Fix theoretical memory leak on error path.

If a notification is bigger than 4 kB (I doubt it one would be), then the
lack of ofpbuf_uninit() would cause a memory leak.

Signed-off-by: Ben Pfaff <blp@nicira.com>
This commit is contained in:
Ben Pfaff
2013-08-01 14:07:35 -07:00
parent 01fcdfc6b3
commit 59e0c910d0

View File

@@ -799,19 +799,21 @@ dpif_linux_port_poll(const struct dpif *dpif_, char **devnamep)
VLOG_DBG("port_changed: dpif:%s vport:%s cmd:%"PRIu8,
dpif->dpif.full_name, vport.name, vport.cmd);
*devnamep = xstrdup(vport.name);
ofpbuf_uninit(&buf);
return 0;
} else {
continue;
}
}
} else if (error == EAGAIN) {
return EAGAIN;
} else if (error != EAGAIN) {
VLOG_WARN_RL(&rl, "error reading or parsing netlink (%s)",
ovs_strerror(error));
nl_sock_drain(dpif->port_notifier);
error = ENOBUFS;
}
VLOG_WARN_RL(&rl, "error reading or parsing netlink (%s)",
ovs_strerror(error));
nl_sock_drain(dpif->port_notifier);
return ENOBUFS;
ofpbuf_uninit(&buf);
if (error) {
return error;
}
}
}