tap: fix memory leak on failure in net_init_tap()
Commit 091a6b2ac
fixed most of the memory leaks in failure
paths in net_init_tap() reported by Coverity (CID 1356216),
but missed one. Fix it by deferring the allocation of
fds and vhost_fds until after the error check.
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Jason Wang <jasowang@redhat.com>
This commit is contained in:
parent
a023b7ac62
commit
fac7d7b1cd
@ -788,8 +788,8 @@ int net_init_tap(const Netdev *netdev, const char *name,
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
} else if (tap->has_fds) {
|
} else if (tap->has_fds) {
|
||||||
char **fds = g_new0(char *, MAX_TAP_QUEUES);
|
char **fds;
|
||||||
char **vhost_fds = g_new0(char *, MAX_TAP_QUEUES);
|
char **vhost_fds;
|
||||||
int nfds, nvhosts;
|
int nfds, nvhosts;
|
||||||
|
|
||||||
if (tap->has_ifname || tap->has_script || tap->has_downscript ||
|
if (tap->has_ifname || tap->has_script || tap->has_downscript ||
|
||||||
@ -801,6 +801,9 @@ int net_init_tap(const Netdev *netdev, const char *name,
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fds = g_new0(char *, MAX_TAP_QUEUES);
|
||||||
|
vhost_fds = g_new0(char *, MAX_TAP_QUEUES);
|
||||||
|
|
||||||
nfds = get_fds(tap->fds, fds, MAX_TAP_QUEUES);
|
nfds = get_fds(tap->fds, fds, MAX_TAP_QUEUES);
|
||||||
if (tap->has_vhostfds) {
|
if (tap->has_vhostfds) {
|
||||||
nvhosts = get_fds(tap->vhostfds, vhost_fds, MAX_TAP_QUEUES);
|
nvhosts = get_fds(tap->vhostfds, vhost_fds, MAX_TAP_QUEUES);
|
||||||
|
Loading…
Reference in New Issue
Block a user