diff --git a/src/libcamera/pipeline/ipu3/ipu3.cpp b/src/libcamera/pipeline/ipu3/ipu3.cpp
index 1bdad209de6e47fb..4e75bd40c66f821a 100644
--- a/src/libcamera/pipeline/ipu3/ipu3.cpp
+++ b/src/libcamera/pipeline/ipu3/ipu3.cpp
@@ -874,10 +874,13 @@ void IPU3CameraData::cio2BufferReady(FrameBuffer *buffer)
 	 * If the request contains a buffer for the RAW stream only, complete it
 	 * now as there's no need for ImgU processing.
 	 */
-	if (request->findBuffer(&rawStream_) &&
-	    pipe_->completeBuffer(camera_, request, buffer)) {
-		pipe_->completeRequest(camera_, request);
-		return;
+	if (request->findBuffer(&rawStream_)) {
+		bool requestComplete =
+			pipe_->completeBuffer(camera_, request, buffer);
+		if (requestComplete) {
+			pipe_->completeRequest(camera_, request);
+			return;
+		}
 	}
 
 	imgu_->input_->queueBuffer(buffer);
