mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2025-11-25 04:41:00 +01:00
BUG/MINOR: hlua: improper lock usage in hlua_filter_new()
In hlua_filter_new(), after each hlua resume, we systematically try to
empty the stack by calling lua_settop(). However we're doing this without
locking the lua context, so it is unsafe in multithreading context if the
script is loaded using 'lua-load'. To fix the issue, we protect the call
with hlua_{lock,unlock}() helpers.
This should be backported up to 2.6.
This commit is contained in:
parent
51f291c795
commit
d81c2205a3
@ -11956,8 +11956,11 @@ static int hlua_filter_new(struct stream *s, struct filter *filter)
|
|||||||
}
|
}
|
||||||
|
|
||||||
end:
|
end:
|
||||||
if (s->hlua)
|
if (s->hlua) {
|
||||||
|
hlua_lock(s->hlua);
|
||||||
lua_settop(s->hlua->T, 0);
|
lua_settop(s->hlua->T, 0);
|
||||||
|
hlua_unlock(s->hlua);
|
||||||
|
}
|
||||||
if (ret <= 0) {
|
if (ret <= 0) {
|
||||||
if (flt_ctx) {
|
if (flt_ctx) {
|
||||||
hlua_ctx_destroy(flt_ctx->hlua[0]);
|
hlua_ctx_destroy(flt_ctx->hlua[0]);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user