From dd5e438d6f96410a8d66bdaa2cd4497edcc962b0 Mon Sep 17 00:00:00 2001 From: Gerardo Iglesias Galvan Date: Tue, 31 May 2011 20:19:37 -0500 Subject: [PATCH] Make all access to memory tracking counters in stream engine lock protected --- src/stream-tcp-reassemble.c | 6 +++++- src/stream-tcp.c | 6 +++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/stream-tcp-reassemble.c b/src/stream-tcp-reassemble.c index 25e618f16c..9238558c39 100644 --- a/src/stream-tcp-reassemble.c +++ b/src/stream-tcp-reassemble.c @@ -278,9 +278,11 @@ int StreamTcpReassembleInit(char quiet) StreamMsgQueuesInit(); /* init the memcap and it's lock */ + SCSpinInit(&stream_reassembly_memuse_spinlock, PTHREAD_PROCESS_PRIVATE); + SCSpinLock(&stream_reassembly_memuse_spinlock); stream_reassembly_memuse = 0; stream_reassembly_memuse_max = 0; - SCSpinInit(&stream_reassembly_memuse_spinlock, PTHREAD_PROCESS_PRIVATE); + SCSpinUnlock(&stream_reassembly_memuse_spinlock); #ifdef DEBUG SCMutexInit(&segment_pool_memuse_mutex, NULL); @@ -345,9 +347,11 @@ void StreamTcpReassembleFree(char quiet) StreamMsgQueuesDeinit(quiet); if (!quiet) { + SCSpinLock(&stream_reassembly_memuse_spinlock); SCLogInfo("Max memuse of the stream reassembly engine %"PRIu32" (in use" " %"PRIu32")", stream_reassembly_memuse_max, stream_reassembly_memuse); + SCSpinUnlock(&stream_reassembly_memuse_spinlock); } SCSpinDestroy(&stream_reassembly_memuse_spinlock); diff --git a/src/stream-tcp.c b/src/stream-tcp.c index 7df2e301b6..7837182b20 100644 --- a/src/stream-tcp.c +++ b/src/stream-tcp.c @@ -462,9 +462,11 @@ void StreamTcpInitConfig(char quiet) } /* init the memcap and it's lock */ + SCSpinInit(&stream_memuse_spinlock, PTHREAD_PROCESS_PRIVATE); + SCSpinLock(&stream_memuse_spinlock); stream_memuse = 0; stream_memuse_max = 0; - SCSpinInit(&stream_memuse_spinlock, PTHREAD_PROCESS_PRIVATE); + SCSpinUnlock(&stream_memuse_spinlock); ssn_pool = PoolInit(stream_config.max_sessions, stream_config.prealloc_sessions, @@ -499,8 +501,10 @@ void StreamTcpFreeConfig(char quiet) SCLogDebug("ssn_pool_cnt %"PRIu64"", ssn_pool_cnt); if (!quiet) { + SCSpinLock(&stream_memuse_spinlock); SCLogInfo("Max memuse of stream engine %"PRIu32" (in use %"PRIu32")", stream_memuse_max, stream_memuse); + SCSpinUnlock(&stream_memuse_spinlock); } SCMutexDestroy(&ssn_pool_mutex);