mirror of
https://github.com/haproxy/haproxy.git
synced 2026-03-22 10:30:34 -04:00
BUG/MINOR: startup: certain goto paths in init_pollers fail to free
If we fail to initialize pollers due to fdtab/fdinfo/polled_mask
not getting allocated, we free any of those that were allocated
and exit. However the ordering was incorrect, and there was an old
unused and unreachable "fail_cache" path as well, which needs to
be taken when no poller works.
This was introduced with this commit during 1.9-dev :
cb92f5c ("MINOR: pollers: move polled_mask outside of struct fdtab.")
It needs to be backported to 1.9 only.
This commit is contained in:
parent
2f167b3543
commit
da7eeedf38
1 changed files with 3 additions and 4 deletions
7
src/fd.c
7
src/fd.c
|
|
@ -528,6 +528,7 @@ int init_pollers()
|
|||
|
||||
if ((polled_mask = calloc(global.maxsock, sizeof(unsigned long))) == NULL)
|
||||
goto fail_polledmask;
|
||||
|
||||
if ((fdinfo = calloc(global.maxsock, sizeof(struct fdinfo))) == NULL)
|
||||
goto fail_info;
|
||||
|
||||
|
|
@ -557,15 +558,13 @@ int init_pollers()
|
|||
return 1;
|
||||
}
|
||||
} while (!bp || bp->pref == 0);
|
||||
return 0;
|
||||
|
||||
fail_cache:
|
||||
free(fdinfo);
|
||||
fail_info:
|
||||
free(fdtab);
|
||||
fail_tab:
|
||||
free(polled_mask);
|
||||
fail_polledmask:
|
||||
free(fdtab);
|
||||
fail_tab:
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue