diff --git a/lib/thread/thread.c b/lib/thread/thread.c index e01ab00c3..11b6f80a3 100644 --- a/lib/thread/thread.c +++ b/lib/thread/thread.c @@ -43,6 +43,7 @@ #include "spdk_internal/thread.h" #define SPDK_MSG_BATCH_SIZE 8 +#define SPDK_MAX_DEVICE_NAME_LEN 256 #define SPDK_MAX_THREAD_NAME_LEN 256 static pthread_mutex_t g_devlist_mutex = PTHREAD_MUTEX_INITIALIZER; @@ -52,7 +53,7 @@ static size_t g_ctx_sz = 0; struct io_device { void *io_device; - char *name; + char name[SPDK_MAX_DEVICE_NAME_LEN + 1]; spdk_io_channel_create_cb create_cb; spdk_io_channel_destroy_cb destroy_cb; spdk_io_device_unregister_cb unregister_cb; @@ -865,9 +866,9 @@ spdk_io_device_register(void *io_device, spdk_io_channel_create_cb create_cb, dev->io_device = io_device; if (name) { - dev->name = strdup(name); + snprintf(dev->name, sizeof(dev->name), "%s", name); } else { - dev->name = spdk_sprintf_alloc("%p", dev); + snprintf(dev->name, sizeof(dev->name), "%p", dev); } dev->create_cb = create_cb; dev->destroy_cb = destroy_cb; @@ -885,7 +886,6 @@ spdk_io_device_register(void *io_device, spdk_io_channel_create_cb create_cb, if (tmp->io_device == io_device) { SPDK_ERRLOG("io_device %p already registered (old:%s new:%s)\n", io_device, tmp->name, dev->name); - free(dev->name); free(dev); pthread_mutex_unlock(&g_devlist_mutex); return; @@ -904,7 +904,6 @@ _finish_unregister(void *arg) dev->name, dev->io_device, dev->unregister_thread->name); dev->unregister_cb(dev->io_device); - free(dev->name); free(dev); } @@ -912,7 +911,6 @@ static void _spdk_io_device_free(struct io_device *dev) { if (dev->unregister_cb == NULL) { - free(dev->name); free(dev); } else { assert(dev->unregister_thread != NULL);