Compiling the latest, I saw these: vsf_ykd.c:349: warning: pointer of type 'void *' used in arithmetic cpg.c:692: warning: pointer of type 'void *' used in arithmetic cpg.c:696: warning: pointer of type 'void *' used in arithmetic cpg.c:878: warning: pointer of type 'void *' used in arithmetic cpg.c:888: warning: pointer of type 'void *' used in arithmetic votequorum.c:997: warning: pointer of type 'void *' used in arithmetic
since they really do cause trouble in some environments, I've fixed them like this: >From d8059e8fb572a4807cf2e9a90eb77c02ef6838c4 Mon Sep 17 00:00:00 2001 From: Jim Meyering <[email protected]> Date: Tue, 24 Mar 2009 12:01:55 +0100 Subject: [PATCH 1/2] avoid performing 'void *' arithmetic, and add a few const attributes --- services/cpg.c | 23 ++++++++++++----------- 1 files changed, 12 insertions(+), 11 deletions(-) diff --git a/services/cpg.c b/services/cpg.c index d8b4a2b..ae1a665 100644 --- a/services/cpg.c +++ b/services/cpg.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2008 Red Hat, Inc. + * Copyright (c) 2006-2009 Red Hat, Inc. * * All rights reserved. * @@ -139,7 +139,7 @@ static void message_handler_req_exec_cpg_procleave ( unsigned int nodeid); static void message_handler_req_exec_cpg_joinlist ( - void *message, + const void *message, unsigned int nodeid); static void message_handler_req_exec_cpg_mcast ( @@ -513,7 +513,7 @@ static int count_groups(void) return num_groups; } -static struct group_info *get_group(mar_cpg_name_t *name) +static struct group_info *get_group(const mar_cpg_name_t *name) { struct list_head *iter; struct group_info *gi = NULL; @@ -686,14 +686,15 @@ static void exec_cpg_procjoin_endian_convert (void *msg) req_exec_cpg_procjoin->reason = swab32(req_exec_cpg_procjoin->reason); } -static void exec_cpg_joinlist_endian_convert (void *msg) +static void exec_cpg_joinlist_endian_convert (void *msg_v) { + char *msg = msg_v; mar_res_header_t *res = (mar_res_header_t *)msg; struct join_list_entry *jle = (struct join_list_entry *)(msg + sizeof(mar_res_header_t)); /* XXX shouldn't mar_res_header be swabbed? */ - while ((void*)jle < msg + res->size) { + while ((const char*)jle < msg + res->size) { jle->pid = swab32(jle->pid); swab_mar_cpg_name_t (&jle->group_name); jle++; @@ -725,7 +726,7 @@ static void exec_cpg_mcast_endian_convert (void *msg) } static void do_proc_join( - mar_cpg_name_t *name, + const mar_cpg_name_t *name, uint32_t pid, unsigned int nodeid, int reason) @@ -871,11 +872,12 @@ static void message_handler_req_exec_cpg_procleave ( /* Got a proclist from another node */ static void message_handler_req_exec_cpg_joinlist ( - void *message, + const void *message_v, unsigned int nodeid) { - mar_res_header_t *res = (mar_res_header_t *)message; - struct join_list_entry *jle = (struct join_list_entry *)(message + sizeof(mar_res_header_t)); + const char *message = message_v; + const mar_res_header_t *res = (const mar_res_header_t *)message; + const struct join_list_entry *jle = (const struct join_list_entry *)(message + sizeof(mar_res_header_t)); log_printf(LOG_LEVEL_NOTICE, "got joinlist message from node %d\n", nodeid); @@ -885,7 +887,7 @@ static void message_handler_req_exec_cpg_joinlist ( return; } - while ((void*)jle < message + res->size) { + while ((const char*)jle < message + res->size) { do_proc_join(&jle->group_name, jle->pid, nodeid, CONFCHG_CPG_REASON_NODEUP); jle++; @@ -1225,4 +1227,3 @@ static void message_handler_req_lib_cpg_groups_get (void *conn, void *message) api->ipc_response_send(conn, &res_lib_cpg_groups_get, sizeof(res_lib_cpg_groups_get)); } - -- 1.6.2.rc1.285.gc5f54 >From 6b4af4d65d019def21df452ee42ccaee5111957d Mon Sep 17 00:00:00 2001 From: Jim Meyering <[email protected]> Date: Tue, 24 Mar 2009 12:10:29 +0100 Subject: [PATCH 2/2] Do not perform arithmetic on "void*" pointers. * exec/vsf_ykd.c (ykd_deliver_fn): Do not perform "void*" arithmetic. * services/votequorum.c (quorum_deliver_fn): Likewise. --- exec/vsf_ykd.c | 4 ++-- services/votequorum.c | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/exec/vsf_ykd.c b/exec/vsf_ykd.c index c993d7f..9542fa4 100644 --- a/exec/vsf_ykd.c +++ b/exec/vsf_ykd.c @@ -1,6 +1,6 @@ /* * Copyright (c) 2005 MontaVista Software, Inc. - * Copyright (c) 2006-2008 Red Hat, Inc. + * Copyright (c) 2006-2009 Red Hat, Inc. * * All rights reserved. * @@ -346,7 +346,7 @@ static void ykd_deliver_fn ( int all_received = 1; int state_position = 0; int i; - char *msg_state = iovec->iov_base + sizeof (struct ykd_header); + char *msg_state = (char *)(iovec->iov_base) + sizeof (struct ykd_header); /* * If this is a localhost address, this node is always primary diff --git a/services/votequorum.c b/services/votequorum.c index 537276d..2f4c397 100644 --- a/services/votequorum.c +++ b/services/votequorum.c @@ -994,7 +994,7 @@ static void quorum_deliver_fn(unsigned int nodeid, struct iovec *iovec, int iov_ if (header->tgtport == 0 && (header->tgtid == us->node_id || header->tgtid == 0)) { - buf = iovec->iov_base + sizeof(struct q_protheader); + buf = (char *)(iovec->iov_base) + sizeof(struct q_protheader); switch (*buf) { case VOTEQUORUM_MSG_NODEINFO: -- 1.6.2.rc1.285.gc5f54 _______________________________________________ Openais mailing list [email protected] https://lists.linux-foundation.org/mailman/listinfo/openais
