diff --git a/src/requester/instance-id.c b/src/requester/instance-id.c
index 7fe7c86..82e3ed1 100644
--- a/src/requester/instance-id.c
+++ b/src/requester/instance-id.c
@@ -10,7 +10,7 @@
 
 #define BIT(i) (1UL << (i))
 
-#define PLDM_TID_MAX 256
+#define PLDM_TID_MAX	 256
 #define PLDM_INST_ID_MAX 32
 
 /* We need to track our allocations explicitly due to OFD lock merging/splitting
@@ -98,14 +98,14 @@
 			   pldm_instance_id_t *iid)
 {
 	static const struct flock cfls = {
-	    .l_type = F_RDLCK,
-	    .l_whence = SEEK_SET,
-	    .l_len = 1,
+		.l_type = F_RDLCK,
+		.l_whence = SEEK_SET,
+		.l_len = 1,
 	};
 	static const struct flock cflx = {
-	    .l_type = F_WRLCK,
-	    .l_whence = SEEK_SET,
-	    .l_len = 1,
+		.l_type = F_WRLCK,
+		.l_whence = SEEK_SET,
+		.l_len = 1,
 	};
 	uint8_t l_iid;
 
@@ -186,9 +186,9 @@
 			  pldm_instance_id_t iid)
 {
 	static const struct flock cflu = {
-	    .l_type = F_UNLCK,
-	    .l_whence = SEEK_SET,
-	    .l_len = 1,
+		.l_type = F_UNLCK,
+		.l_whence = SEEK_SET,
+		.l_len = 1,
 	};
 	struct flock flop;
 	int rc;
diff --git a/src/requester/pldm.c b/src/requester/pldm.c
index c78512f..973f194 100644
--- a/src/requester/pldm.c
+++ b/src/requester/pldm.c
@@ -50,39 +50,39 @@
 /* This macro does the setup and teardown required for the old API to use the
  * new API. Since the setup/teardown logic is the same for all four send/recv
  * functions, it makes sense to only define it once. */
-#define PLDM_REQ_FN(eid, fd, fn, ...)                                          \
-	do {                                                                   \
-		struct pldm_transport_mctp_demux *demux;                       \
-		bool using_open_transport = false;                             \
-		pldm_requester_rc_t rc;                                        \
-		pldm_tid_t tid = 1;                                            \
-		struct pldm_transport *ctx;                                    \
+#define PLDM_REQ_FN(eid, fd, fn, ...)                                            \
+	do {                                                                     \
+		struct pldm_transport_mctp_demux *demux;                         \
+		bool using_open_transport = false;                               \
+		pldm_requester_rc_t rc;                                          \
+		pldm_tid_t tid = 1;                                              \
+		struct pldm_transport *ctx;                                      \
 		/* The fd can be for a socket we opened or one the consumer    \
-		 * opened. */                                                  \
-		if (open_transport &&                                          \
-		    mctp_fd == pldm_transport_mctp_demux_get_socket_fd(        \
-				   open_transport)) {                          \
-			using_open_transport = true;                           \
-			demux = open_transport;                                \
-		} else {                                                       \
-			demux = pldm_transport_mctp_demux_init_with_fd(fd);    \
-			if (!demux) {                                          \
-				rc = PLDM_REQUESTER_OPEN_FAIL;                 \
-				goto transport_out;                            \
-			}                                                      \
-		}                                                              \
-		ctx = pldm_transport_mctp_demux_core(demux);                   \
-		rc = pldm_transport_mctp_demux_map_tid(demux, tid, eid);       \
-		if (rc) {                                                      \
-			rc = PLDM_REQUESTER_OPEN_FAIL;                         \
-			goto transport_out;                                    \
-		}                                                              \
-		rc = fn(ctx, tid, __VA_ARGS__);                                \
-	transport_out:                                                         \
-		if (!using_open_transport) {                                   \
-			pldm_transport_mctp_demux_destroy(demux);              \
-		}                                                              \
-		return rc;                                                     \
+		 * opened. */ \
+		if (open_transport &&                                            \
+		    mctp_fd == pldm_transport_mctp_demux_get_socket_fd(          \
+				       open_transport)) {                        \
+			using_open_transport = true;                             \
+			demux = open_transport;                                  \
+		} else {                                                         \
+			demux = pldm_transport_mctp_demux_init_with_fd(fd);      \
+			if (!demux) {                                            \
+				rc = PLDM_REQUESTER_OPEN_FAIL;                   \
+				goto transport_out;                              \
+			}                                                        \
+		}                                                                \
+		ctx = pldm_transport_mctp_demux_core(demux);                     \
+		rc = pldm_transport_mctp_demux_map_tid(demux, tid, eid);         \
+		if (rc) {                                                        \
+			rc = PLDM_REQUESTER_OPEN_FAIL;                           \
+			goto transport_out;                                      \
+		}                                                                \
+		rc = fn(ctx, tid, __VA_ARGS__);                                  \
+	transport_out:                                                           \
+		if (!using_open_transport) {                                     \
+			pldm_transport_mctp_demux_destroy(demux);                \
+		}                                                                \
+		return rc;                                                       \
 	} while (0)
 
 pldm_requester_rc_t pldm_recv_any(mctp_eid_t eid, int mctp_fd,
@@ -97,7 +97,7 @@
 			      uint8_t **pldm_resp_msg, size_t *resp_msg_len)
 {
 	pldm_requester_rc_t rc =
-	    pldm_recv_any(eid, mctp_fd, pldm_resp_msg, resp_msg_len);
+		pldm_recv_any(eid, mctp_fd, pldm_resp_msg, resp_msg_len);
 	struct pldm_msg_hdr *hdr = (struct pldm_msg_hdr *)(*pldm_resp_msg);
 	if (hdr->instance_id != instance_id) {
 		free(*pldm_resp_msg);
@@ -125,7 +125,7 @@
 
 /* Adding this here for completeness in the case we can't smoothly
  * transition apps over to the new api */
-void pldm_close()
+void pldm_close(void)
 {
 	if (open_transport) {
 		pldm_transport_mctp_demux_destroy(open_transport);
