If an address has already been set for a node, don't add it again. Signed-off-by: David Teigland Index: linux/drivers/dlm/lowcomms.c =================================================================== --- linux.orig/drivers/dlm/lowcomms.c 2005-06-02 12:28:30.000000000 +0800 +++ linux/drivers/dlm/lowcomms.c 2005-06-02 12:52:51.391577056 +0800 @@ -272,6 +272,7 @@ int dlm_set_local(int nodeid, int weight, char *addr_buf) { struct sockaddr_storage *addr; + int i; if (local_count > DLM_MAX_ADDR_COUNT - 1) { log_print("too many local addresses set %d", local_count); @@ -284,7 +285,15 @@ if (!addr) return -ENOMEM; memcpy(addr, addr_buf, sizeof(*addr)); + + for (i = 0; i < local_count; i++) { + if (!memcmp(local_addr[i], addr, sizeof(*addr))) { + kfree(addr); + goto out; + } + } local_addr[local_count++] = addr; + out: return 0; } --