From e455e7f15d34cc0e7db8d286787179e8c273ddb9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Markus=20M=C3=A4kel=C3=A4?= Date: Tue, 3 Jul 2018 11:32:36 +0300 Subject: [PATCH] MXS-1953: Always initialize the GWBUF spinlock The spinlock in the buffer is used but it was not always initialized. Also added missing initialization of the SERVER pointer. --- server/core/buffer.cc | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/server/core/buffer.cc b/server/core/buffer.cc index 5fc5ca662..f49e95653 100644 --- a/server/core/buffer.cc +++ b/server/core/buffer.cc @@ -88,6 +88,7 @@ gwbuf_alloc(unsigned int size) rval->hint = NULL; rval->properties = NULL; rval->gwbuf_type = GWBUF_TYPE_UNDEFINED; + rval->server = NULL; CHK_GWBUF(rval); retblock: if (rval == NULL) @@ -304,6 +305,8 @@ gwbuf_clone_one(GWBUF *buf) } atomic_add(&buf->sbuf->refcount, 1); + spinlock_init(&rval->gwbuf_lock); + rval->server = buf->server; rval->sbuf = buf->sbuf; rval->start = buf->start; rval->end = buf->end; @@ -385,6 +388,8 @@ static GWBUF *gwbuf_clone_portion(GWBUF *buf, return NULL; } atomic_add(&buf->sbuf->refcount, 1); + spinlock_init(&clonebuf->gwbuf_lock); + clonebuf->server = buf->server; clonebuf->sbuf = buf->sbuf; clonebuf->gwbuf_type = buf->gwbuf_type; /*< clone info bits too */ clonebuf->start = (void *)((char*)buf->start + start_offset);