From 70c79f514024551128acc2d3ba879ef1407ed130 Mon Sep 17 00:00:00 2001 From: Volker Lendecke Date: Mon, 21 Jul 2014 09:42:54 +0000 Subject: [PATCH] ctdb: Avoid a talloc in ctdb_queue_send Signed-off-by: Volker Lendecke Reviewed-by: Amitay Isaacs --- ctdb/common/ctdb_io.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/ctdb/common/ctdb_io.c b/ctdb/common/ctdb_io.c index 351006db2d3..0a85f3bcd7a 100644 --- a/ctdb/common/ctdb_io.c +++ b/ctdb/common/ctdb_io.c @@ -44,6 +44,7 @@ struct ctdb_queue_pkt { uint8_t *data; uint32_t length; uint32_t full_length; + uint8_t buf[]; }; struct ctdb_queue { @@ -324,11 +325,13 @@ int ctdb_queue_send(struct ctdb_queue *queue, uint8_t *data, uint32_t length) if (length2 == 0) return 0; } - pkt = talloc(queue, struct ctdb_queue_pkt); + pkt = talloc_size( + queue, offsetof(struct ctdb_queue_pkt, buf) + length2); CTDB_NO_MEMORY(queue->ctdb, pkt); + talloc_set_name_const(pkt, "struct ctdb_queue_pkt"); - pkt->data = talloc_memdup(pkt, data, length2); - CTDB_NO_MEMORY(queue->ctdb, pkt->data); + pkt->data = pkt->buf; + memcpy(pkt->data, data, length2); pkt->length = length2; pkt->full_length = full_length; -- 2.11.4.GIT