mirror of
https://gitlab.nic.cz/labs/bird.git
synced 2024-11-10 05:08:42 +00:00
a95141111c
The original algorithm was suffering from an ABA race condition: A: fp = page_stack B: completely allocates the same page and writes into it some data A: unsuspecting, loads (invalid) next = fp->next B: finishes working with the page and returns it back to page_stack A: compare-exchange page_stack: fp => next succeeds and writes garbage to page_stack Fixed this by using an implicit spinlock in hot page allocator. |
||
---|---|---|
.. | ||
alloc_test.c | ||
alloc.c | ||
config.Y | ||
Doc | ||
domain.c | ||
endian.h | ||
io-loop.c | ||
io-loop.h | ||
io.c | ||
krt.c | ||
krt.h | ||
krt.Y | ||
log.c | ||
main.c | ||
Makefile | ||
random.c | ||
unix.h |