diff --git a/include/libcamera/internal/process.h b/include/libcamera/internal/process.h
index 307c809f7..4ab846b24 100644
--- a/include/libcamera/internal/process.h
+++ b/include/libcamera/internal/process.h
@@ -45,7 +45,7 @@ public:
 private:
 	LIBCAMERA_DISABLE_COPY_AND_MOVE(Process)
 
-	void closeAllFdsExcept(const std::vector<int> &fds);
+	void closeAllFdsExcept(std::vector<int> v);
 	int isolate();
 	void died(int wstatus);
 
diff --git a/src/libcamera/process.cpp b/src/libcamera/process.cpp
index 479163e83..5193386ce 100644
--- a/src/libcamera/process.cpp
+++ b/src/libcamera/process.cpp
@@ -264,7 +264,7 @@ int Process::start(const std::string &path,
 
 		std::vector<int> v(fds.begin(), fds.end());
 		v.push_back(STDERR_FILENO);
-		closeAllFdsExcept(v);
+		closeAllFdsExcept(std::move(v));
 
 		const auto tryDevNullLowestFd = [](int expected, int oflag) {
 			int fd = open("/dev/null", oflag);
@@ -296,9 +296,8 @@ int Process::start(const std::string &path,
 	}
 }
 
-void Process::closeAllFdsExcept(const std::vector<int> &fds)
+void Process::closeAllFdsExcept(std::vector<int> v)
 {
-	std::vector<int> v(fds);
 	sort(v.begin(), v.end());
 
 	ASSERT(v.empty() || v.front() >= 0);
