diff --git a/include/iscsi-private.h b/include/iscsi-private.h index 528b9a1..8d209b9 100644 --- a/include/iscsi-private.h +++ b/include/iscsi-private.h @@ -129,6 +129,7 @@ struct iscsi_context { int reconnect_deferred; int debug; int mallocs; + int reallocs; int frees; }; @@ -291,6 +292,7 @@ unsigned char *scsi_task_get_data_in_buffer(struct scsi_task *task, uint32_t pos inline void* iscsi_malloc(struct iscsi_context *iscsi, size_t size); inline void* iscsi_zmalloc(struct iscsi_context *iscsi, size_t size); +inline void* iscsi_realloc(struct iscsi_context *iscsi, void* ptr, size_t size); inline void iscsi_free(struct iscsi_context *iscsi, void* ptr); inline char* iscsi_strdup(struct iscsi_context *iscsi, const char* str); diff --git a/lib/init.c b/lib/init.c index ecb3925..cf51500 100644 --- a/lib/init.c +++ b/lib/init.c @@ -48,6 +48,14 @@ inline void* iscsi_zmalloc(struct iscsi_context *iscsi, size_t size) { return ptr; } +inline void* iscsi_realloc(struct iscsi_context *iscsi, void* ptr, size_t size) { + void * _ptr = realloc(ptr, size); + if (_ptr != NULL) { + iscsi->reallocs++; + } + return _ptr; +} + inline void iscsi_free(struct iscsi_context *iscsi, void* ptr) { if (ptr == NULL) return; free(ptr); @@ -262,9 +270,9 @@ iscsi_destroy_context(struct iscsi_context *iscsi) iscsi->connect_data = NULL; if (iscsi->mallocs != iscsi->frees) { - DPRINTF(iscsi,1,"%d memory blocks lost at iscsi_destroy_context() after %d mallocs and %d frees",iscsi->mallocs-iscsi->frees,iscsi->mallocs,iscsi->frees); + DPRINTF(iscsi,1,"%d memory blocks lost at iscsi_destroy_context() after %d malloc(s), %d realloc(s) and %d free(s)",iscsi->mallocs-iscsi->frees,iscsi->mallocs,iscsi->reallocs,iscsi->frees); } else { - DPRINTF(iscsi,5,"memory is clean at iscsi_destroy_context() after %d mallocs and %d frees",iscsi->mallocs,iscsi->frees); + DPRINTF(iscsi,5,"memory is clean at iscsi_destroy_context() after %d mallocs, %d realloc(s) and %d frees",iscsi->mallocs,iscsi->reallocs,iscsi->frees); } memset(iscsi, 0, sizeof(struct iscsi_context)); diff --git a/lib/pdu.c b/lib/pdu.c index f2e11ba..c1e578f 100644 --- a/lib/pdu.c +++ b/lib/pdu.c @@ -149,7 +149,7 @@ iscsi_add_data(struct iscsi_context *iscsi, struct iscsi_data *data, } else if (data->alloc_size != new_alloc_size) { - data->data = realloc(data->data, new_alloc_size); + data->data = iscsi_realloc(iscsi, data->data, new_alloc_size); } if (data->data == NULL) {