transport: mctp-demux: Refactor buffer handling in recv callback
Assigning to *pldm_resp_msg added to the cleanup required prior to
returning. Instead, only assign to *pldm_resp_msg once it's no-longer
possible to fail.
Signed-off-by: Andrew Jeffery <andrew@aj.id.au>
Change-Id: I584b2307f71acde4c3da38336fb70c975e22a4d8
diff --git a/src/transport/mctp-demux.c b/src/transport/mctp-demux.c
index 4769827..91946d2 100644
--- a/src/transport/mctp-demux.c
+++ b/src/transport/mctp-demux.c
@@ -135,26 +135,21 @@
size_t pldm_len = length - mctp_prefix_len;
iov[0].iov_len = mctp_prefix_len;
iov[0].iov_base = mctp_prefix;
- *pldm_resp_msg = buf;
- if (*pldm_resp_msg == NULL) {
- return PLDM_REQUESTER_RECV_FAIL;
- }
iov[1].iov_len = pldm_len;
- iov[1].iov_base = *pldm_resp_msg;
+ iov[1].iov_base = buf;
struct msghdr msg = { 0 };
msg.msg_iov = iov;
msg.msg_iovlen = sizeof(iov) / sizeof(iov[0]);
ssize_t bytes = recvmsg(demux->socket, &msg, 0);
if (length != bytes) {
- free(*pldm_resp_msg);
- *pldm_resp_msg = NULL;
+ free(buf);
return PLDM_REQUESTER_INVALID_RECV_LEN;
}
if ((mctp_prefix[0] != eid) || (mctp_prefix[1] != mctp_msg_type)) {
- free(*pldm_resp_msg);
- *pldm_resp_msg = NULL;
+ free(buf);
return PLDM_REQUESTER_NOT_PLDM_MSG;
}
+ *pldm_resp_msg = buf;
*resp_msg_len = pldm_len;
return PLDM_REQUESTER_SUCCESS;
}