diff --git a/redfish-core/lib/virtual_media.hpp b/redfish-core/lib/virtual_media.hpp
index 442fad8..c153f2f 100644
--- a/redfish-core/lib/virtual_media.hpp
+++ b/redfish-core/lib/virtual_media.hpp
@@ -85,8 +85,8 @@
 using CheckItemHandler =
     std::function<void(const std::string& service, const std::string& resName,
                        const std::shared_ptr<bmcweb::AsyncResp>&,
-                       std::pair<sdbusplus::message::object_path,
-                                 dbus::utility::DBusInteracesMap>&)>;
+                       const std::pair<sdbusplus::message::object_path,
+                                       dbus::utility::DBusInteracesMap>&)>;
 
 inline void findAndParseObject(const std::string& service,
                                const std::string& resName,
@@ -96,7 +96,7 @@
     crow::connections::systemBus->async_method_call(
         [service, resName, aResp,
          handler](const boost::system::error_code ec,
-                  dbus::utility::ManagedObjectType& subtree) {
+                  const dbus::utility::ManagedObjectType& subtree) {
         if (ec)
         {
             BMCWEB_LOG_DEBUG << "DBUS response error";
@@ -104,7 +104,7 @@
             return;
         }
 
-        for (auto& item : subtree)
+        for (const auto& item : subtree)
         {
             VmMode mode = parseObjectPathAndGetMode(item.first, resName);
             if (mode != VmMode::Invalid)
@@ -300,12 +300,12 @@
         "org.freedesktop.DBus.ObjectManager", "GetManagedObjects");
 }
 
-inline void afterGetVmData(const std::string& name,
-                           const std::string& /*service*/,
-                           const std::string& resName,
-                           const std::shared_ptr<bmcweb::AsyncResp>& asyncResp,
-                           std::pair<sdbusplus::message::object_path,
-                                     dbus::utility::DBusInteracesMap>& item)
+inline void
+    afterGetVmData(const std::string& name, const std::string& /*service*/,
+                   const std::string& resName,
+                   const std::shared_ptr<bmcweb::AsyncResp>& asyncResp,
+                   const std::pair<sdbusplus::message::object_path,
+                                   dbus::utility::DBusInteracesMap>& item)
 {
     VmMode mode = parseObjectPathAndGetMode(item.first, resName);
     if (mode == VmMode::Invalid)
@@ -343,7 +343,7 @@
     BMCWEB_LOG_DEBUG << "Get Virtual Media resource data.";
 
     findAndParseObject(service, resName, aResp,
-                       std::bind_front(&afterGetVmData, name));
+                       std::bind_front(afterGetVmData, name));
 }
 
 /**
