diff --git a/linker/linker_config.cpp b/linker/linker_config.cpp
index 437aa86..7741904 100644
--- a/linker/linker_config.cpp
+++ b/linker/linker_config.cpp
@@ -60,7 +60,7 @@
   };
 
   explicit ConfigParser(std::string&& content)
-      : content_(content), p_(0), lineno_(0), was_end_of_file_(false) {}
+      : content_(std::move(content)), p_(0), lineno_(0), was_end_of_file_(false) {}
 
   /*
    * Possible return values
@@ -147,7 +147,7 @@
   PropertyValue() = default;
 
   PropertyValue(std::string&& value, size_t lineno)
-    : value_(value), lineno_(lineno) {}
+    : value_(std::move(value)), lineno_(lineno) {}
 
   const std::string& value() const {
     return value_;
@@ -362,7 +362,7 @@
 class Properties {
  public:
   explicit Properties(std::unordered_map<std::string, PropertyValue>&& properties)
-      : properties_(properties), target_sdk_version_(__ANDROID_API__) {}
+      : properties_(std::move(properties)), target_sdk_version_(__ANDROID_API__) {}
 
   std::vector<std::string> get_strings(const std::string& name, size_t* lineno = nullptr) const {
     auto it = find_property(name, lineno);
@@ -411,7 +411,7 @@
     static std::string vndk = Config::get_vndk_version_string('-');
     params.push_back({ "VNDK_VER", vndk });
 
-    for (auto&& path : paths) {
+    for (auto& path : paths) {
       format_string(&path, params);
     }
 
diff --git a/linker/linker_config.h b/linker/linker_config.h
index a318bba..75d9378 100644
--- a/linker/linker_config.h
+++ b/linker/linker_config.h
@@ -114,15 +114,15 @@
   }
 
   void set_search_paths(std::vector<std::string>&& search_paths) {
-    search_paths_ = search_paths;
+    search_paths_ = std::move(search_paths);
   }
 
   void set_permitted_paths(std::vector<std::string>&& permitted_paths) {
-    permitted_paths_ = permitted_paths;
+    permitted_paths_ = std::move(permitted_paths);
   }
 
   void set_whitelisted_libs(std::vector<std::string>&& whitelisted_libs) {
-    whitelisted_libs_ = whitelisted_libs;
+    whitelisted_libs_ = std::move(whitelisted_libs);
   }
  private:
   const std::string name_;
diff --git a/linker/linker_namespaces.h b/linker/linker_namespaces.h
index 31aeeb6..f4428eb 100644
--- a/linker/linker_namespaces.h
+++ b/linker/linker_namespaces.h
@@ -87,14 +87,14 @@
     return ld_library_paths_;
   }
   void set_ld_library_paths(std::vector<std::string>&& library_paths) {
-    ld_library_paths_ = library_paths;
+    ld_library_paths_ = std::move(library_paths);
   }
 
   const std::vector<std::string>& get_default_library_paths() const {
     return default_library_paths_;
   }
   void set_default_library_paths(std::vector<std::string>&& library_paths) {
-    default_library_paths_ = library_paths;
+    default_library_paths_ = std::move(library_paths);
   }
   void set_default_library_paths(const std::vector<std::string>& library_paths) {
     default_library_paths_ = library_paths;
@@ -104,7 +104,7 @@
     return permitted_paths_;
   }
   void set_permitted_paths(std::vector<std::string>&& permitted_paths) {
-    permitted_paths_ = permitted_paths;
+    permitted_paths_ = std::move(permitted_paths);
   }
   void set_permitted_paths(const std::vector<std::string>& permitted_paths) {
     permitted_paths_ = permitted_paths;
@@ -114,7 +114,7 @@
     return whitelisted_libs_;
   }
   void set_whitelisted_libs(std::vector<std::string>&& whitelisted_libs) {
-    whitelisted_libs_ = whitelisted_libs;
+    whitelisted_libs_ = std::move(whitelisted_libs);
   }
   void set_whitelisted_libs(const std::vector<std::string>& whitelisted_libs) {
     whitelisted_libs_ = whitelisted_libs;
