From 7e395af06b62603632af3a082eb58b281876ea41 Mon Sep 17 00:00:00 2001 From: Eddie James Date: Thu, 17 Oct 2024 10:55:55 -0500 Subject: [PATCH] openpower-pels: Check response header Using the new PLDM API requires checking the response header for the request and datagram flags, as those indicate that the message isn't really a response. Change-Id: I38f8e77bd5defaf611695649bb75d589b2548f17 Signed-off-by: Eddie James --- extensions/openpower-pels/pldm_interface.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/extensions/openpower-pels/pldm_interface.cpp b/extensions/openpower-pels/pldm_interface.cpp index 392bd00..c8f59e2 100644 --- a/extensions/openpower-pels/pldm_interface.cpp +++ b/extensions/openpower-pels/pldm_interface.cpp @@ -275,6 +275,7 @@ void PLDMInterface::receive(IO& /*io*/, int /*fd*/, uint32_t revents, pldm_tid_t pldmTID; auto rc = pldm_transport_recv_msg(transport, &pldmTID, &responseMsg, &responseSize); + struct pldm_msg_hdr* hdr = (struct pldm_msg_hdr*)responseMsg; if (pldmTID != _eid) { // We got a response to someone else's message. Ignore it. @@ -298,6 +299,11 @@ void PLDMInterface::receive(IO& /*io*/, int /*fd*/, uint32_t revents, responseMsg = nullptr; } + if (hdr && (hdr->request || hdr->datagram)) + { + free(responseMsg); + return; + } cleanupCmd();