File fix-pointer-to-int.patch of Package valkey
From eb6da581e73a0f0deae2e2b40def2d535cf3c738 Mon Sep 17 00:00:00 2001
From: stydxm <stydxm@outlook.com>
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 <stydxm@outlook.com>
---
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);