Box TLS-SLL + free boundary hardening: normalize C0–C6 to base (ptr-1) at free boundary; route all caches/freelists via base; replace remaining g_tls_sll_head direct writes with Box API (tls_sll_push/splice) in refill/magazine/ultra; keep C7 excluded. Fixes rbp=0xa0 free crash by preventing header overwrite and centralizing TLS-SLL invariants.
This commit is contained in:
@ -71,10 +71,9 @@ static inline int hotmag_refill_from_sll(int class_idx, int max_take) {
|
||||
if (max_take > room) max_take = room;
|
||||
int taken = 0;
|
||||
while (taken < max_take) {
|
||||
void* head = g_tls_sll_head[class_idx];
|
||||
if (!head) break;
|
||||
g_tls_sll_head[class_idx] = *(void**)head;
|
||||
if (g_tls_sll_count[class_idx] > 0) g_tls_sll_count[class_idx]--;
|
||||
// CRITICAL: Use Box TLS-SLL API to avoid race condition (rbp=0xa0 SEGV)
|
||||
void* head = NULL;
|
||||
if (!tls_sll_pop(class_idx, &head)) break;
|
||||
hm->slots[hm->top++] = head;
|
||||
taken++;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user