diff --git a/src/libcamera/camera.cpp b/src/libcamera/camera.cpp
index 0da167a7bc51..48bf19b28979 100644
--- a/src/libcamera/camera.cpp
+++ b/src/libcamera/camera.cpp
@@ -1126,6 +1126,11 @@ int Camera::queueRequest(Request *request)
 		return -EXDEV;
 	}
 
+	if (request->status() != Request::RequestPending) {
+		LOG(Camera, Error) << request->toString() << " is not prepared";
+		return -EINVAL;
+	}
+
 	/*
 	 * The camera state may change until the end of the function. No locking
 	 * is however needed as PipelineHandler::queueRequest() will handle
