]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
BUG/MINOR: threads: produce correct global mask for tgroup > 1
authorWilly Tarreau <w@1wt.eu>
Fri, 15 Jul 2022 17:38:52 +0000 (19:38 +0200)
committerWilly Tarreau <w@1wt.eu>
Fri, 15 Jul 2022 17:41:26 +0000 (19:41 +0200)
In thread_resolve_group_mask(), if a global thread number is passed
and it belongs to a group greater than 1, an incorrect shift resulted
in shifting that ID again which made it appear nowhere or in a wrong
group possibly. The bug was introduced in 2.5 with commit 627def9e5
("MINOR: threads: add a new function to resolve config groups and
masks") though the groups only starts to be usable in 2.7, so there
is no impact for this bug, hence no backport is needed.

src/thread.c

index 28cfa9de09169899d90e45c851d0a4d5e7160c6d..1cf0a746f6251819102292193f0a34a518e74204 100644 (file)
@@ -1156,7 +1156,7 @@ int thread_resolve_group_mask(uint igid, ulong imask, uint *ogid, ulong *omask,
 
                        /* we have a valid group, convert this to global thread IDs */
                        *ogid = igid;
-                       *omask = imask << ha_tgroup_info[igid - 1].base;
+                       *omask = imask & (ha_tgroup_info[igid - 1].threads_enabled << ha_tgroup_info[igid - 1].base);
                        return 0;
                }
        } else {