diff --git a/src/libcamera/camera.cpp b/src/libcamera/camera.cpp
index 0da167a7bc51..c0a368c1e66c 100644
--- a/src/libcamera/camera.cpp
+++ b/src/libcamera/camera.cpp
@@ -1146,6 +1146,18 @@ int Camera::queueRequest(Request *request)
 		}
 	}
 
+	for (auto const stream : d->activeStreams_) {
+		const StreamConfiguration &config = stream->configuration();
+		FrameBuffer *buffer = request->findBuffer(stream);
+
+		if (!buffer && config.hints & StreamConfiguration::Hint::MandatoryStream) {
+			LOG(Camera, Error)
+				<< "No buffer provided for mandatory stream";
+			request->_d()->reset();
+			return -ENOMEM;
+		}
+	}
+
 	d->pipe_->invokeMethod(&PipelineHandler::queueRequest,
 			       ConnectionTypeQueued, request);
 
