diff --git a/.clang-format b/.clang-format
index a75a2c2..e5530e6 100644
--- a/.clang-format
+++ b/.clang-format
@@ -104,7 +104,7 @@
 PenaltyBreakString: 1000
 PenaltyBreakTemplateDeclaration: 10
 PenaltyExcessCharacter: 1000000
-PenaltyReturnTypeOnItsOwnLine: 60
+PenaltyReturnTypeOnItsOwnLine: 150
 PenaltyIndentedWhitespace: 1
 PointerAlignment: Left
 QualifierAlignment: Left
diff --git a/dump-extensions/openpower-dumps/dump_manager_resource.cpp b/dump-extensions/openpower-dumps/dump_manager_resource.cpp
index 9c39b0a..b223d17 100644
--- a/dump-extensions/openpower-dumps/dump_manager_resource.cpp
+++ b/dump-extensions/openpower-dumps/dump_manager_resource.cpp
@@ -106,8 +106,8 @@
     lastEntryId++;
 }
 
-sdbusplus::message::object_path
-    Manager::createDump(phosphor::dump::DumpCreateParams params)
+sdbusplus::message::object_path Manager::createDump(
+    phosphor::dump::DumpCreateParams params)
 {
     using NotAllowed =
         sdbusplus::xyz::openbmc_project::Common::Error::NotAllowed;
diff --git a/dump-extensions/openpower-dumps/dump_manager_resource.hpp b/dump-extensions/openpower-dumps/dump_manager_resource.hpp
index 22c5078..81657fe 100644
--- a/dump-extensions/openpower-dumps/dump_manager_resource.hpp
+++ b/dump-extensions/openpower-dumps/dump_manager_resource.hpp
@@ -67,8 +67,8 @@
      *
      *  @return object_path - The object path of the new entry.
      */
-    sdbusplus::message::object_path
-        createDump(phosphor::dump::DumpCreateParams params) override;
+    sdbusplus::message::object_path createDump(
+        phosphor::dump::DumpCreateParams params) override;
 };
 
 } // namespace resource
diff --git a/dump-extensions/openpower-dumps/dump_manager_system.cpp b/dump-extensions/openpower-dumps/dump_manager_system.cpp
index 3bd2d7e..bd7d8a3 100644
--- a/dump-extensions/openpower-dumps/dump_manager_system.cpp
+++ b/dump-extensions/openpower-dumps/dump_manager_system.cpp
@@ -128,8 +128,8 @@
     return;
 }
 
-sdbusplus::message::object_path
-    Manager::createDump(phosphor::dump::DumpCreateParams params)
+sdbusplus::message::object_path Manager::createDump(
+    phosphor::dump::DumpCreateParams params)
 {
     constexpr auto SYSTEMD_SERVICE = "org.freedesktop.systemd1";
     constexpr auto SYSTEMD_OBJ_PATH = "/org/freedesktop/systemd1";
diff --git a/dump-extensions/openpower-dumps/dump_manager_system.hpp b/dump-extensions/openpower-dumps/dump_manager_system.hpp
index b5df352..a95a0b8 100644
--- a/dump-extensions/openpower-dumps/dump_manager_system.hpp
+++ b/dump-extensions/openpower-dumps/dump_manager_system.hpp
@@ -67,8 +67,8 @@
      *
      *  @return object_path - The path to the new dump entry.
      */
-    sdbusplus::message::object_path
-        createDump(phosphor::dump::DumpCreateParams params) override;
+    sdbusplus::message::object_path createDump(
+        phosphor::dump::DumpCreateParams params) override;
 };
 
 } // namespace system
diff --git a/dump_manager_bmc.cpp b/dump_manager_bmc.cpp
index 3741f83..6f19a67 100644
--- a/dump_manager_bmc.cpp
+++ b/dump_manager_bmc.cpp
@@ -31,8 +31,8 @@
 bool Manager::fUserDumpInProgress = false;
 constexpr auto BMC_DUMP = "BMC_DUMP";
 
-sdbusplus::message::object_path
-    Manager::createDump(phosphor::dump::DumpCreateParams params)
+sdbusplus::message::object_path Manager::createDump(
+    phosphor::dump::DumpCreateParams params)
 {
     if (params.size() > CREATE_DUMP_MAX_PARAMS)
     {
diff --git a/dump_manager_bmc.hpp b/dump_manager_bmc.hpp
index 7445c1c..b356980 100644
--- a/dump_manager_bmc.hpp
+++ b/dump_manager_bmc.hpp
@@ -78,8 +78,8 @@
      *
      *  @return object_path - The object path of the new dump entry.
      */
-    sdbusplus::message::object_path
-        createDump(phosphor::dump::DumpCreateParams params) override;
+    sdbusplus::message::object_path createDump(
+        phosphor::dump::DumpCreateParams params) override;
 
   private:
     /** @brief Create Dump entry d-bus object
diff --git a/dump_manager_faultlog.cpp b/dump_manager_faultlog.cpp
index 516706e..c2573f1 100644
--- a/dump_manager_faultlog.cpp
+++ b/dump_manager_faultlog.cpp
@@ -29,8 +29,8 @@
 using ErrnoOpen = xyz::openbmc_project::Common::File::Open::ERRNO;
 using PathOpen = xyz::openbmc_project::Common::File::Open::PATH;
 
-sdbusplus::message::object_path
-    Manager::createDump(phosphor::dump::DumpCreateParams params)
+sdbusplus::message::object_path Manager::createDump(
+    phosphor::dump::DumpCreateParams params)
 {
     lg2::info("In dump_manager_fault.cpp createDump");
 
diff --git a/dump_manager_faultlog.hpp b/dump_manager_faultlog.hpp
index a0c3a30..f58b79c 100644
--- a/dump_manager_faultlog.hpp
+++ b/dump_manager_faultlog.hpp
@@ -74,8 +74,8 @@
      *
      *  @return object_path - The path to the new dump entry.
      */
-    sdbusplus::message::object_path
-        createDump(phosphor::dump::DumpCreateParams params) override;
+    sdbusplus::message::object_path createDump(
+        phosphor::dump::DumpCreateParams params) override;
 
   private:
     /** @brief Path to the dump file*/
diff --git a/dump_utils.cpp b/dump_utils.cpp
index c362ee6..dc1726f 100644
--- a/dump_utils.cpp
+++ b/dump_utils.cpp
@@ -54,8 +54,8 @@
     return response[0].first;
 }
 
-std::optional<std::tuple<uint32_t, uint64_t, uint64_t>>
-    extractDumpDetails(const std::filesystem::path& file)
+std::optional<std::tuple<uint32_t, uint64_t, uint64_t>> extractDumpDetails(
+    const std::filesystem::path& file)
 {
     static constexpr auto ID_POS = 1;
     static constexpr auto EPOCHTIME_POS = 2;
diff --git a/dump_utils.hpp b/dump_utils.hpp
index 4e06bc0..8cff241 100644
--- a/dump_utils.hpp
+++ b/dump_utils.hpp
@@ -386,8 +386,8 @@
  * and size of the file if the extraction is successful, or std::nullopt
  * if the file name does not match the expected format.
  */
-std::optional<std::tuple<uint32_t, uint64_t, uint64_t>>
-    extractDumpDetails(const std::filesystem::path& file);
+std::optional<std::tuple<uint32_t, uint64_t, uint64_t>> extractDumpDetails(
+    const std::filesystem::path& file);
 
 } // namespace dump
 } // namespace phosphor
