BUG/MINOR: threads: produce correct global mask for tgroup > 1

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.
This commit is contained in:
Willy Tarreau 2022-07-15 19:38:52 +02:00
parent 114c9c87ce
commit 9b0f0d146f

View 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 {