On 8/12/17 6:04 AM, Phil Sutter wrote: > Apart from trying to close(-1), this also leaked memory. > > Signed-off-by: Phil Sutter <p...@nwl.cc> > --- > ip/ipvrf.c | 9 +++++---- > 1 file changed, 5 insertions(+), 4 deletions(-) > > diff --git a/ip/ipvrf.c b/ip/ipvrf.c > index 92e2db98ca7d7..75cc026d072b8 100644 > --- a/ip/ipvrf.c > +++ b/ip/ipvrf.c > @@ -373,12 +373,12 @@ static int vrf_switch(const char *name) > > /* -1 on length to add '/' to the end */ > if (ipvrf_get_netns(netns, sizeof(netns) - 1) < 0) > - return -1; > + goto out; > > if (vrf_path(vpath, sizeof(vpath)) < 0) { > fprintf(stderr, "Failed to get base cgroup path: %s\n", > strerror(errno)); > - return -1; > + goto out; > } > > /* if path already ends in netns then don't add it again */ > @@ -429,13 +429,14 @@ static int vrf_switch(const char *name) > snprintf(pid, sizeof(pid), "%d", getpid()); > if (write(fd, pid, strlen(pid)) < 0) { > fprintf(stderr, "Failed to join cgroup\n"); > - goto out; > + goto out2; > } > > rc = 0; > +out2: > + close(fd); > out: > free(mnt); > - close(fd); > > return rc; > } >
Acked-by: David Ahern <dsah...@gmail.com>