diff --git a/src/apps/cam/kms_sink.cpp b/src/apps/cam/kms_sink.cpp
index a508977d..2aefec06 100644
--- a/src/apps/cam/kms_sink.cpp
+++ b/src/apps/cam/kms_sink.cpp
@@ -302,24 +302,22 @@ int KMSSink::configurePipeline(const libcamera::PixelFormat &format)
 
 int KMSSink::start()
 {
-	std::unique_ptr<DRM::AtomicRequest> request;
+	DRM::AtomicRequest request(&dev_);
 
 	int ret = FrameSink::start();
 	if (ret < 0)
 		return ret;
 
 	/* Disable all CRTCs and planes to start from a known valid state. */
-	request = std::make_unique<DRM::AtomicRequest>(&dev_);
-
 	for (const DRM::Crtc &crtc : dev_.crtcs())
-		request->addProperty(&crtc, "ACTIVE", 0);
+		request.addProperty(&crtc, "ACTIVE", 0);
 
 	for (const DRM::Plane &plane : dev_.planes()) {
-		request->addProperty(&plane, "CRTC_ID", 0);
-		request->addProperty(&plane, "FB_ID", 0);
+		request.addProperty(&plane, "CRTC_ID", 0);
+		request.addProperty(&plane, "FB_ID", 0);
 	}
 
-	ret = request->commit(DRM::AtomicRequest::FlagAllowModeset);
+	ret = request.commit(DRM::AtomicRequest::FlagAllowModeset);
 	if (ret < 0) {
 		std::cerr
 			<< "Failed to disable CRTCs and planes: "
