From 98411c48c08f6093a0b42b46c02c6544804bf98d Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Sun, 30 Aug 1998 04:35:54 +0000 Subject: - zero shared memory before freeing it - changed the hash size to 13 (much smaller than before). This should make for more efficient shared memory usage as it will lead to less fragmentation. (This used to be commit 9c1e4c2dae6323c9a1bd74148d0b45aac61e7c0a) --- source3/locking/shmem.c | 5 ++++- source3/locking/shmem_sysv.c | 9 ++++----- 2 files changed, 8 insertions(+), 6 deletions(-) (limited to 'source3/locking') diff --git a/source3/locking/shmem.c b/source3/locking/shmem.c index be8e22108a..6015085fe4 100644 --- a/source3/locking/shmem.c +++ b/source3/locking/shmem.c @@ -41,7 +41,7 @@ extern int DEBUGLEVEL; #define SHM_FILE_MODE 0644 #endif -#define SHMEM_HASH_SIZE 113 +#define SHMEM_HASH_SIZE 13 /* WARNING : offsets are used because mmap() does not guarantee that all processes have the @@ -606,6 +606,9 @@ static BOOL smb_shm_free(int offset) DEBUG(6,("smb_shm_free : freeing %d bytes at offset %d\n",header_p->size*CellSize,offset)); + /* zero the area being freed - this allows us to find bugs faster */ + memset(smb_shm_offset2addr(offset), 0, header_p->size*CellSize); + if ( scanner_p == prev_p ) { smb_shm_header_p->statistics.cells_free += header_p->size; diff --git a/source3/locking/shmem_sysv.c b/source3/locking/shmem_sysv.c index 192ed32344..b57116f7b8 100644 --- a/source3/locking/shmem_sysv.c +++ b/source3/locking/shmem_sysv.c @@ -48,11 +48,7 @@ extern int DEBUGLEVEL; #define SEMAPHORE_PERMS 0666 #endif -#ifdef SEMMSL -#define SHMEM_HASH_SIZE (SEMMSL-1) -#else -#define SHMEM_HASH_SIZE 63 -#endif +#define SHMEM_HASH_SIZE 13 #define MIN_SHM_SIZE 0x1000 @@ -330,6 +326,9 @@ static BOOL shm_free(int offset) DEBUG(6,("shm_free : freeing %d bytes at offset %d\n", header_p->size*CellSize,offset)); + + /* zero the area being freed - this allows us to find bugs faster */ + memset(shm_offset2addr(offset), 0, header_p->size*CellSize); if (scanner_p == prev_p) { shm_header_p->statistics.cells_free += header_p->size; -- cgit