summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorXavi Hernandez <xhernandez@redhat.com>2020-02-07 10:19:57 +0100
committerXavi Hernandez <xhernandez@redhat.com>2020-02-18 17:29:51 +0000
commitee415f38f71bad62368333184fab3b70be524b78 (patch)
tree22d7668410c79ad10d5408441bed476f93f01fe1 /tests
parentf389b960d4d337e448808728bfaf2aa168cebdac (diff)
core: fix memory pool management races
Objects allocated from a per-thread memory pool keep a reference to it to be able to return the object to the pool when not used anymore. The object holding this reference can have a long life cycle that could survive a glfs_fini() call. This means that it's unsafe to destroy memory pools from glfs_fini(). Another side effect of destroying memory pools from glfs_fini() is that the TLS variable that points to one of those pools cannot be reset for all alive threads. This means that any attempt to allocate memory from those threads will access already free'd memory, which is very dangerous. To fix these issues, mem_pools_fini() doesn't destroy pool lists anymore. Only at process termination the pools are destroyed. Change-Id: Ib189a5510ab6bdac78983c6c65a022e9634b0965 Fixes: bz#1801684 Signed-off-by: Xavi Hernandez <xhernandez@redhat.com>
Diffstat (limited to 'tests')
0 files changed, 0 insertions, 0 deletions