0
0
mirror of https://gitlab.nic.cz/labs/bird.git synced 2024-12-22 09:41:54 +00:00

Nest: fixed a race-condition between import and export

There was a leaking stack pointer to the global memory.
Fixed by making that temporary structure thread local static.
This commit is contained in:
Maria Matejka 2024-12-10 10:52:52 +01:00
parent 77a4b21365
commit bc15f0b9c7

View File

@ -1964,10 +1964,8 @@ rte_recalculate(struct rtable_private *table, struct rt_import_hook *c, struct n
} }
/* We need to add a spinlock sentinel to the beginning */ /* We need to add a spinlock sentinel to the beginning */
struct rte_storage local_sentinel = { _Thread_local static struct rte_storage local_sentinel = { .flags = REF_OBSOLETE, };
.flags = REF_OBSOLETE, atomic_store_explicit(&local_sentinel.next, old_best_stored, memory_order_release);
.next = old_best_stored,
};
atomic_store_explicit(&net->routes, &local_sentinel, memory_order_release); atomic_store_explicit(&net->routes, &local_sentinel, memory_order_release);
/* Mark also the old route as obsolete. */ /* Mark also the old route as obsolete. */