[SCM] Samba Shared Repository - branch master updated

Amitay Isaacs amitay at samba.org
Mon Jul 21 22:10:03 MDT 2014


The branch, master has been updated
       via  478ef94 ctdb: Fix verbose_memory_names
       via  70c79f5 ctdb: Avoid a talloc in ctdb_queue_send
      from  5907b0c sys_poll_intr: fix timeout arithmetic

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit 478ef9493f131c4d94bada708f790db3254f0a59
Author: Volker Lendecke <vl at samba.org>
Date:   Mon Jul 21 09:48:45 2014 +0000

    ctdb: Fix verbose_memory_names
    
    If we have already partly written a packet, "data" and thus "pkt->data"
    does not point to the start of the packet anymore. Assign "hdr" while
    it still points at the start of the header.
    
    Signed-off-by: Volker Lendecke <vl at samba.org>
    Reviewed-by: Amitay Isaacs <amitay at gmail.com>
    
    Autobuild-User(master): Amitay Isaacs <amitay at samba.org>
    Autobuild-Date(master): Tue Jul 22 06:09:50 CEST 2014 on sn-devel-104

commit 70c79f514024551128acc2d3ba879ef1407ed130
Author: Volker Lendecke <vl at samba.org>
Date:   Mon Jul 21 09:42:54 2014 +0000

    ctdb: Avoid a talloc in ctdb_queue_send
    
    Signed-off-by: Volker Lendecke <vl at samba.org>
    Reviewed-by: Amitay Isaacs <amitay at gmail.com>

-----------------------------------------------------------------------

Summary of changes:
 ctdb/common/ctdb_io.c |   11 +++++++----
 1 files changed, 7 insertions(+), 4 deletions(-)


Changeset truncated at 500 lines:

diff --git a/ctdb/common/ctdb_io.c b/ctdb/common/ctdb_io.c
index 351006d..b5f8a72 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 {
@@ -285,6 +286,7 @@ static void queue_io_handler(struct event_context *ev, struct fd_event *fde,
 */
 int ctdb_queue_send(struct ctdb_queue *queue, uint8_t *data, uint32_t length)
 {
+	struct ctdb_req_header *hdr = (struct ctdb_req_header *)data;
 	struct ctdb_queue_pkt *pkt;
 	uint32_t length2, full_length;
 
@@ -324,11 +326,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;
@@ -342,7 +346,6 @@ int ctdb_queue_send(struct ctdb_queue *queue, uint8_t *data, uint32_t length)
 	queue->out_queue_length++;
 
 	if (queue->ctdb->tunable.verbose_memory_names != 0) {
-		struct ctdb_req_header *hdr = (struct ctdb_req_header *)pkt->data;
 		switch (hdr->operation) {
 		case CTDB_REQ_CONTROL: {
 			struct ctdb_req_control *c = (struct ctdb_req_control *)hdr;


-- 
Samba Shared Repository


More information about the samba-cvs mailing list