From: Jens Axboe Date: Thu, 22 Mar 2018 17:29:25 +0000 (-0600) Subject: smalloc: Remove Valgrind instrumentation X-Git-Tag: fio-3.6~22^2 X-Git-Url: https://git.kernel.dk/?p=fio.git;a=commitdiff_plain;h=5457259f57c651d41f6cb5ee4a7af49ff05a9aed smalloc: Remove Valgrind instrumentation Since it can happen that memory allocated with smalloc() is freed by a child process and since Valgrind's memory tracking is per process the smalloc()/sfree() instrumentation leads to incorrect Valgrind reports. Hence remove that instrumentation again. Fixes: 0ffccc21fcd6 ("Improve Valgrind instrumentation of memory allocations") Signed-off-by: Bart Van Assche --- diff --git a/smalloc.c b/smalloc.c index 7b1690ad..a2ad25a0 100644 --- a/smalloc.c +++ b/smalloc.c @@ -5,13 +5,6 @@ #include #include #include -#ifdef CONFIG_VALGRIND_DEV -#include -#else -#define RUNNING_ON_VALGRIND 0 -#define VALGRIND_MALLOCLIKE_BLOCK(addr, size, rzB, is_zeroed) do { } while (0) -#define VALGRIND_FREELIKE_BLOCK(addr, rzB) do { } while (0) -#endif #include "fio.h" #include "fio_sem.h" @@ -48,12 +41,6 @@ struct pool { size_t mmap_size; }; -#ifdef SMALLOC_REDZONE -#define REDZONE_SIZE sizeof(unsigned int) -#else -#define REDZONE_SIZE 0 -#endif - struct block_hdr { size_t size; #ifdef SMALLOC_REDZONE @@ -263,10 +250,6 @@ static void fill_redzone(struct block_hdr *hdr) { unsigned int *postred = postred_ptr(hdr); - /* Let Valgrind fill the red zones. */ - if (RUNNING_ON_VALGRIND) - return; - hdr->prered = SMALLOC_PRE_RED; *postred = SMALLOC_POST_RED; } @@ -275,10 +258,6 @@ static void sfree_check_redzone(struct block_hdr *hdr) { unsigned int *postred = postred_ptr(hdr); - /* Let Valgrind check the red zones. */ - if (RUNNING_ON_VALGRIND) - return; - if (hdr->prered != SMALLOC_PRE_RED) { log_err("smalloc pre redzone destroyed!\n" " ptr=%p, prered=%x, expected %x\n", @@ -346,7 +325,6 @@ void sfree(void *ptr) } if (pool) { - VALGRIND_FREELIKE_BLOCK(ptr, REDZONE_SIZE); sfree_pool(pool, ptr); return; } @@ -437,7 +415,7 @@ static void *smalloc_pool(struct pool *pool, size_t size) return ptr; } -static void *__smalloc(size_t size, bool is_zeroed) +void *smalloc(size_t size) { unsigned int i, end_pool; @@ -453,9 +431,6 @@ static void *__smalloc(size_t size, bool is_zeroed) if (ptr) { last_pool = i; - VALGRIND_MALLOCLIKE_BLOCK(ptr, size, - REDZONE_SIZE, - is_zeroed); return ptr; } } @@ -473,14 +448,9 @@ static void *__smalloc(size_t size, bool is_zeroed) return NULL; } -void *smalloc(size_t size) -{ - return __smalloc(size, false); -} - void *scalloc(size_t nmemb, size_t size) { - return __smalloc(nmemb * size, true); + return smalloc(nmemb * size); } char *smalloc_strdup(const char *str)