X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=src%2Fcommon%2Fconsumer-metadata-cache.c;h=0f086fe9643218ba91837446b031154c91453e58;hb=ff00898c439fb356898d51207f0546165ab7432a;hp=d597e64e37883c91182bcaf9c54327cd9cc0d54f;hpb=5e41ebe1bcc918cb5ff5d97489ccfbae0b7086a3;p=lttng-tools.git diff --git a/src/common/consumer-metadata-cache.c b/src/common/consumer-metadata-cache.c index d597e64e3..0f086fe96 100644 --- a/src/common/consumer-metadata-cache.c +++ b/src/common/consumer-metadata-cache.c @@ -46,14 +46,13 @@ static int extend_metadata_cache(struct lttng_consumer_channel *channel, { int ret = 0; char *tmp_data_ptr; - unsigned int new_size; + unsigned int new_size, old_size; assert(channel); assert(channel->metadata_cache); - new_size = max_t(unsigned int, - channel->metadata_cache->cache_alloc_size + size, - channel->metadata_cache->cache_alloc_size << 1); + old_size = channel->metadata_cache->cache_alloc_size; + new_size = max_t(unsigned int, old_size + size, old_size << 1); DBG("Extending metadata cache to %u", new_size); tmp_data_ptr = realloc(channel->metadata_cache->data, new_size); if (!tmp_data_ptr) { @@ -62,6 +61,8 @@ static int extend_metadata_cache(struct lttng_consumer_channel *channel, ret = -1; goto end; } + /* Zero newly allocated memory */ + memset(tmp_data_ptr + old_size, 0, new_size - old_size); channel->metadata_cache->data = tmp_data_ptr; channel->metadata_cache->cache_alloc_size = new_size; @@ -81,6 +82,7 @@ int consumer_metadata_cache_write(struct lttng_consumer_channel *channel, unsigned int offset, unsigned int len, char *data) { int ret = 0; + int size_ret; struct consumer_metadata_cache *cache; assert(channel); @@ -109,10 +111,11 @@ int consumer_metadata_cache_write(struct lttng_consumer_channel *channel, cache->contiguous = cache->max_offset; if (channel->monitor) { - ret = write(channel->metadata_stream->ust_metadata_poll_pipe[1], + size_ret = lttng_write(channel->metadata_stream->ust_metadata_poll_pipe[1], &dummy, 1); - if (ret < 1) { + if (size_ret < 1) { ERR("Wakeup UST metadata pipe"); + ret = -1; goto end; } }