Squashed commit of the following:
commit
26fa24b06bd1cb55b6aef483acb5be9f09f72d39
Author: russ <rucombs@cisco.com>
Date: Thu Mar 14 18:53:23 2019 -0400
memory: remove useless thread local
commit
5e3460332ef06117b951ed7173d052afc68fe48a
Author: russ <rucombs@cisco.com>
Date: Thu Mar 14 17:56:15 2019 -0400
memory: do not re-enter the pruner
-- prevent allocations when pruning flow for memory
-- detect re-entrancy and exit as a failsafe
void Flow::reset(bool do_cleanup)
{
- DetectionEngine::onload(this);
- DetectionEngine::set_next_packet();
- DetectionEngine de;
-
if ( session )
{
+ DetectionEngine::onload(this);
+
if ( do_cleanup )
+ {
+ DetectionEngine::set_next_packet();
+ DetectionEngine de;
+
session->cleanup();
+ de.get_context()->clear_callbacks();
+ }
else
session->clear();
}
constexpr size_t offset = offsetof(Flow, flow_data);
// FIXIT-L need a struct to zero here to make future proof
memset((uint8_t*)this+offset, 0, sizeof(Flow)-offset);
-
- de.get_context()->clear_callbacks();
}
void Flow::restart(bool dump_flow_data)
}
};
-static THREAD_LOCAL Tracker s_tracker;
+static Tracker s_tracker;
// -----------------------------------------------------------------------------
// helpers
if ( !thread_cap )
return true;
- return memory::free_space(n, thread_cap, s_tracker, prune_handler);
+ static bool entered = false;
+ assert(!entered);
+
+ if ( entered )
+ return false;
+
+ entered = true;
+ bool avail = memory::free_space(n, thread_cap, s_tracker, prune_handler);
+ entered = false;
+
+ return avail;
}
static size_t fudge_it(size_t n)