From: Victor Julien Date: Tue, 7 Jan 2014 10:56:23 +0000 (+0100) Subject: lock profiling: fix memory leak X-Git-Tag: suricata-2.0rc2~53 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=3f49eb843d68ddbfe09a3dacb304f9b27e748d20;p=thirdparty%2Fsuricata.git lock profiling: fix memory leak If lock profiling was compiled in, but disabled in the config a serious memory leak condition was triggered. Valgrind output: ==11169== 9,091,248 bytes in 189,401 blocks are definitely lost in loss record 564 of 564 ==11169== at 0x4C2A2DB: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) ==11169== by 0xABC44C: LockRecordAdd (util-profiling-locks.c:112) ==11169== by 0xABC950: SCProfilingAddPacketLocks (util-profiling-locks.c:141) ==11169== by 0xA04CD5: TmThreadsSlotVarRun (tm-threads.c:562) ==11169== by 0x958793: TmThreadsSlotProcessPkt (tm-threads.h:142) ==11169== by 0x9599C3: PcapFileCallbackLoop (source-pcap-file.c:172) ==11169== by 0x56FC130: ??? (in /usr/lib/x86_64-linux-gnu/libpcap.so.1.4.0) ==11169== by 0x959D24: ReceivePcapFileLoop (source-pcap-file.c:210) ==11169== by 0xA05B9E: TmThreadsSlotPktAcqLoop (tm-threads.c:703) ==11169== by 0x6155F6D: start_thread (pthread_create.c:311) ==11169== by 0x6E399CC: clone (clone.S:113) --- diff --git a/src/util-profiling-locks.c b/src/util-profiling-locks.c index b88e27dd26..5be0448899 100644 --- a/src/util-profiling-locks.c +++ b/src/util-profiling-locks.c @@ -136,6 +136,10 @@ void LockRecordAdd(ProfilingLock *l) { /** \param p void ptr to Packet struct */ void SCProfilingAddPacketLocks(void *p) { int i; + + if (profiling_locks_enabled == 0) + return; + for (i = 0; i < locks_idx; i++) { pthread_mutex_lock(&lock_records_mutex); LockRecordAdd(&locks[i]);