diff --git a/pldmd/dbus_impl_pdr.cpp b/pldmd/dbus_impl_pdr.cpp
index ae37be2..1516c8d 100644
--- a/pldmd/dbus_impl_pdr.cpp
+++ b/pldmd/dbus_impl_pdr.cpp
@@ -19,8 +19,8 @@
                                                             uint16_t entityID,
                                                             uint16_t stateSetId)
 {
-    auto pdrs =
-        pldm::utils::findStateEffecterPDR(tid, entityID, stateSetId, pdrRepo);
+    auto pdrs = pldm::utils::findStateEffecterPDR(tid, entityID, stateSetId,
+                                                  pdrRepo);
 
     if (pdrs.empty())
     {
@@ -33,8 +33,8 @@
 std::vector<std::vector<uint8_t>>
     Pdr::findStateSensorPDR(uint8_t tid, uint16_t entityID, uint16_t stateSetId)
 {
-    auto pdrs =
-        pldm::utils::findStateSensorPDR(tid, entityID, stateSetId, pdrRepo);
+    auto pdrs = pldm::utils::findStateSensorPDR(tid, entityID, stateSetId,
+                                                pdrRepo);
     if (pdrs.empty())
     {
         throw ResourceNotFound();
diff --git a/pldmd/handler.hpp b/pldmd/handler.hpp
index 7622b17..cfa95eb 100644
--- a/pldmd/handler.hpp
+++ b/pldmd/handler.hpp
@@ -48,9 +48,9 @@
     {
         Response response(sizeof(pldm_msg), 0);
         auto ptr = reinterpret_cast<pldm_msg*>(response.data());
-        auto rc =
-            encode_cc_only_resp(request->hdr.instance_id, request->hdr.type,
-                                request->hdr.command, cc, ptr);
+        auto rc = encode_cc_only_resp(request->hdr.instance_id,
+                                      request->hdr.type, request->hdr.command,
+                                      cc, ptr);
         assert(rc == PLDM_SUCCESS);
         return response;
     }
diff --git a/pldmd/pldmd.cpp b/pldmd/pldmd.cpp
index 191dd11..9f5bbaa 100644
--- a/pldmd/pldmd.cpp
+++ b/pldmd/pldmd.cpp
@@ -104,9 +104,9 @@
         {
             if (hdrFields.pldm_type != PLDM_FWUP)
             {
-                response =
-                    invoker.handle(hdrFields.pldm_type, hdrFields.command,
-                                   request, requestLen);
+                response = invoker.handle(hdrFields.pldm_type,
+                                          hdrFields.command, request,
+                                          requestLen);
             }
             else
             {
@@ -376,8 +376,8 @@
                         }
 
                         iov[0].iov_base = &requestMsg[0];
-                        iov[0].iov_len =
-                            sizeof(requestMsg[0]) + sizeof(requestMsg[1]);
+                        iov[0].iov_len = sizeof(requestMsg[0]) +
+                                         sizeof(requestMsg[1]);
                         iov[1].iov_base = (*response).data();
                         iov[1].iov_len = (*response).size();
 
