From eb6da581e73a0f0deae2e2b40def2d535cf3c738 Mon Sep 17 00:00:00 2001 From: stydxm Date: Wed, 11 Feb 2026 05:48:20 +0800 Subject: [PATCH] Fix pointer-to-int-cast warnings for RDMA address handling Signed-off-by: stydxm --- deps/libvalkey/src/rdma.c | 8 ++++---- src/rdma.c | 22 +++++++++++----------- tests/rdma/rdma-test.c | 22 +++++++++++----------- 3 files changed, 26 insertions(+), 26 deletions(-) diff --git a/deps/libvalkey/src/rdma.c b/deps/libvalkey/src/rdma.c index b0deba72531..eddefbeb787 100644 --- a/deps/libvalkey/src/rdma.c +++ b/deps/libvalkey/src/rdma.c @@ -161,7 +161,7 @@ static int rdmaPostRecv(RdmaContext *ctx, struct rdma_cm_id *cm_id, valkeyRdmaCm sge.length = length; sge.lkey = ctx->cmd_mr->lkey; - recv_wr.wr_id = (uint64_t)cmd; + recv_wr.wr_id = (uint64_t)(uintptr_t)cmd; recv_wr.sg_list = &sge; recv_wr.num_sge = 1; recv_wr.next = NULL; @@ -302,7 +302,7 @@ static int rdmaSendCommand(valkeyContext *c, struct rdma_cm_id *cm_id, valkeyRdm send_wr.sg_list = &sge; send_wr.num_sge = 1; - send_wr.wr_id = (uint64_t)_cmd; + send_wr.wr_id = (uint64_t)(uintptr_t)_cmd; send_wr.opcode = IBV_WR_SEND; send_wr.send_flags = IBV_SEND_SIGNALED; send_wr.next = NULL; @@ -320,7 +320,7 @@ static int connRdmaRegisterRx(valkeyContext *c, struct rdma_cm_id *cm_id) { valkeyRdmaCmd cmd = {0}; cmd.memory.opcode = htons(RegisterXferMemory); - cmd.memory.addr = htobe64((uint64_t)ctx->recv_buf); + cmd.memory.addr = htobe64((uint64_t)(uintptr_t)ctx->recv_buf); cmd.memory.length = htonl(ctx->recv_length); cmd.memory.key = htonl(ctx->recv_mr->rkey); @@ -338,7 +338,7 @@ static int connRdmaHandleRecv(valkeyContext *c, RdmaContext *ctx, struct rdma_cm switch (ntohs(cmd->keepalive.opcode)) { case RegisterXferMemory: - ctx->tx_addr = (char *)be64toh(cmd->memory.addr); + ctx->tx_addr = (char *)(uintptr_t)be64toh(cmd->memory.addr); ctx->tx_length = ntohl(cmd->memory.length); ctx->tx_key = ntohl(cmd->memory.key); ctx->tx_offset = 0; diff --git a/src/rdma.c b/src/rdma.c index 864cca4de4f..2d4cc498c25 100644 --- a/src/rdma.c +++ b/src/rdma.c @@ -180,11 +180,11 @@ static int rdmaPostRecv(RdmaContext *ctx, struct rdma_cm_id *cm_id, ValkeyRdmaCm return C_ERR; } - sge.addr = (uint64_t)cmd; + sge.addr = (uint64_t)(uintptr_t)cmd; sge.length = length; sge.lkey = ctx->cmd_mr->lkey; - recv_wr.wr_id = (uint64_t)cmd; + recv_wr.wr_id = (uint64_t)(uintptr_t)cmd; recv_wr.sg_list = &sge; recv_wr.num_sge = 1; recv_wr.next = NULL; @@ -451,13 +451,13 @@ static int rdmaSendCommand(RdmaContext *ctx, struct rdma_cm_id *cm_id, ValkeyRdm assert(i < 2 * VALKEY_RDMA_MAX_WQE); memcpy(_cmd, cmd, sizeof(ValkeyRdmaCmd)); - sge.addr = (uint64_t)_cmd; + sge.addr = (uint64_t)(uintptr_t)_cmd; sge.length = sizeof(ValkeyRdmaCmd); sge.lkey = ctx->cmd_mr->lkey; send_wr.sg_list = &sge; send_wr.num_sge = 1; - send_wr.wr_id = (uint64_t)_cmd; + send_wr.wr_id = (uint64_t)(uintptr_t)_cmd; send_wr.opcode = IBV_WR_SEND; send_wr.send_flags = IBV_SEND_SIGNALED; send_wr.next = NULL; @@ -474,7 +474,7 @@ static int connRdmaRegisterRx(RdmaContext *ctx, struct rdma_cm_id *cm_id) { ValkeyRdmaCmd cmd = {0}; cmd.memory.opcode = htons(RegisterXferMemory); - cmd.memory.addr = htonu64((uint64_t)ctx->rx.addr); + cmd.memory.addr = htonu64((uint64_t)(uintptr_t)ctx->rx.addr); cmd.memory.length = htonl(ctx->rx.length); cmd.memory.key = htonl(ctx->rx.mr->rkey); @@ -552,7 +552,7 @@ static int connRdmaHandleRecv(RdmaContext *ctx, struct rdma_cm_id *cm_id, Valkey case Keepalive: break; case RegisterXferMemory: - ctx->tx_addr = (char *)ntohu64(cmd->memory.addr); + ctx->tx_addr = (char *)(uintptr_t)ntohu64(cmd->memory.addr); ctx->tx.length = ntohl(cmd->memory.length); ctx->tx_key = ntohl(cmd->memory.key); ctx->tx.offset = 0; @@ -632,14 +632,14 @@ static int connRdmaHandleCq(rdma_connection *rdma_conn) { switch (wc.opcode) { case IBV_WC_RECV: - cmd = (ValkeyRdmaCmd *)wc.wr_id; + cmd = (ValkeyRdmaCmd *)(uintptr_t)wc.wr_id; if (connRdmaHandleRecv(ctx, cm_id, cmd, wc.byte_len) == C_ERR) { return C_ERR; } break; case IBV_WC_RECV_RDMA_WITH_IMM: - cmd = (ValkeyRdmaCmd *)wc.wr_id; + cmd = (ValkeyRdmaCmd *)(uintptr_t)wc.wr_id; if (connRdmaHandleRecvImm(ctx, cm_id, cmd, ntohl(wc.imm_data)) == C_ERR) { rdma_conn->c.state = CONN_STATE_ERROR; return C_ERR; @@ -654,7 +654,7 @@ static int connRdmaHandleCq(rdma_connection *rdma_conn) { break; case IBV_WC_SEND: - cmd = (ValkeyRdmaCmd *)wc.wr_id; + cmd = (ValkeyRdmaCmd *)(uintptr_t)wc.wr_id; if (connRdmaHandleSend(cmd) == C_ERR) { return C_ERR; } @@ -1300,7 +1300,7 @@ static size_t connRdmaSend(connection *conn, const void *data, size_t data_len) memcpy(addr, data, data_len); - sge.addr = (uint64_t)addr; + sge.addr = (uint64_t)(uintptr_t)addr; sge.lkey = ctx->tx.mr->lkey; sge.length = data_len; @@ -1309,7 +1309,7 @@ static size_t connRdmaSend(connection *conn, const void *data, size_t data_len) send_wr.opcode = IBV_WR_RDMA_WRITE_WITH_IMM; send_wr.send_flags = (++ctx->tx_ops % (VALKEY_RDMA_MAX_WQE / 2)) ? 0 : IBV_SEND_SIGNALED; send_wr.imm_data = htonl(data_len); - send_wr.wr.rdma.remote_addr = (uint64_t)remote_addr; + send_wr.wr.rdma.remote_addr = (uint64_t)(uintptr_t)remote_addr; send_wr.wr.rdma.rkey = ctx->tx_key; send_wr.wr_id = 0; send_wr.next = NULL; diff --git a/tests/rdma/rdma-test.c b/tests/rdma/rdma-test.c index 6d39522f8ae..19288012c33 100644 --- a/tests/rdma/rdma-test.c +++ b/tests/rdma/rdma-test.c @@ -150,11 +150,11 @@ static int rdmaPostRecv(RdmaContext *ctx, struct rdma_cm_id *cm_id, valkeyRdmaCm struct ibv_recv_wr recv_wr, *bad_wr; - sge.addr = (uint64_t)cmd; + sge.addr = (uint64_t)(uintptr_t)cmd; sge.length = length; sge.lkey = ctx->cmd_mr->lkey; - recv_wr.wr_id = (uint64_t)cmd; + recv_wr.wr_id = (uint64_t)(uintptr_t)cmd; recv_wr.sg_list = &sge; recv_wr.num_sge = 1; recv_wr.next = NULL; @@ -286,13 +286,13 @@ static int rdmaSendCommand(RdmaContext *ctx, struct rdma_cm_id *cm_id, valkeyRdm assert(i < 2 * VALKEY_RDMA_MAX_WQE); memcpy(_cmd, cmd, sizeof(valkeyRdmaCmd)); - sge.addr = (uint64_t)_cmd; + sge.addr = (uint64_t)(uintptr_t)_cmd; sge.length = sizeof(valkeyRdmaCmd); sge.lkey = ctx->cmd_mr->lkey; send_wr.sg_list = &sge; send_wr.num_sge = 1; - send_wr.wr_id = (uint64_t)_cmd; + send_wr.wr_id = (uint64_t)(uintptr_t)_cmd; send_wr.opcode = IBV_WR_SEND; send_wr.send_flags = IBV_SEND_SIGNALED; send_wr.next = NULL; @@ -308,7 +308,7 @@ static int connRdmaRegisterRx(RdmaContext *ctx, struct rdma_cm_id *cm_id) { valkeyRdmaCmd cmd = { 0 }; cmd.memory.opcode = htons(RegisterXferMemory); - cmd.memory.addr = htobe64((uint64_t)ctx->recv_buf); + cmd.memory.addr = htobe64((uint64_t)(uintptr_t)ctx->recv_buf); cmd.memory.length = htonl(ctx->recv_length); cmd.memory.key = htonl(ctx->recv_mr->rkey); @@ -326,7 +326,7 @@ static int connRdmaHandleRecv(RdmaContext *ctx, struct rdma_cm_id *cm_id, valkey switch (ntohs(cmd->keepalive.opcode)) { case RegisterXferMemory: - ctx->tx_addr = (char *)be64toh(cmd->memory.addr); + ctx->tx_addr = (char *)(uintptr_t)be64toh(cmd->memory.addr); ctx->tx_length = ntohl(cmd->memory.length); ctx->tx_key = ntohl(cmd->memory.key); ctx->tx_offset = 0; @@ -405,7 +405,7 @@ static int connRdmaHandleCq(RdmaContext *ctx) { switch (wc.opcode) { case IBV_WC_RECV: - cmd = (valkeyRdmaCmd *)wc.wr_id; + cmd = (valkeyRdmaCmd *)(uintptr_t)wc.wr_id; if (connRdmaHandleRecv(ctx, cm_id, cmd, wc.byte_len) == -1) { return -1; } @@ -413,7 +413,7 @@ static int connRdmaHandleCq(RdmaContext *ctx) { break; case IBV_WC_RECV_RDMA_WITH_IMM: - cmd = (valkeyRdmaCmd *)wc.wr_id; + cmd = (valkeyRdmaCmd *)(uintptr_t)wc.wr_id; if (connRdmaHandleRecvImm(ctx, cm_id, cmd, ntohl(wc.imm_data)) == -1) { return -1; } @@ -426,7 +426,7 @@ static int connRdmaHandleCq(RdmaContext *ctx) { break; case IBV_WC_SEND: - cmd = (valkeyRdmaCmd *)wc.wr_id; + cmd = (valkeyRdmaCmd *)(uintptr_t)wc.wr_id; if (connRdmaHandleSend(cmd) == -1) { return -1; } @@ -510,7 +510,7 @@ static size_t connRdmaSend(RdmaContext *ctx, struct rdma_cm_id *cm_id, const voi assert(data_len <= ctx->tx_length); memcpy(addr, data, data_len); - sge.addr = (uint64_t)addr; + sge.addr = (uint64_t)(uintptr_t)addr; sge.lkey = ctx->send_mr->lkey; sge.length = data_len; @@ -519,7 +519,7 @@ static size_t connRdmaSend(RdmaContext *ctx, struct rdma_cm_id *cm_id, const voi send_wr.opcode = IBV_WR_RDMA_WRITE_WITH_IMM; send_wr.send_flags = (++ctx->send_ops % VALKEY_RDMA_MAX_WQE) ? 0 : IBV_SEND_SIGNALED; send_wr.imm_data = htonl(data_len); - send_wr.wr.rdma.remote_addr = (uint64_t)remote_addr; + send_wr.wr.rdma.remote_addr = (uint64_t)(uintptr_t)remote_addr; send_wr.wr.rdma.rkey = ctx->tx_key; send_wr.next = NULL; ret = ibv_post_send(cm_id->qp, &send_wr, &bad_wr);