diff --git a/src/libcamera/pipeline/ipu3/ipu3.cpp b/src/libcamera/pipeline/ipu3/ipu3.cpp
index 6df93eedb365b904..d143a425817b5f03 100644
--- a/src/libcamera/pipeline/ipu3/ipu3.cpp
+++ b/src/libcamera/pipeline/ipu3/ipu3.cpp
@@ -726,7 +726,11 @@ int PipelineHandlerIPU3::allocateBuffers(Camera *camera)
 	if (ret < 0)
 		return ret;
 
-	bufferCount = ret;
+	bufferCount = std::max({
+		data->outStream_.configuration().bufferCount,
+		data->vfStream_.configuration().bufferCount,
+		data->rawStream_.configuration().bufferCount,
+	});
 
 	ret = imgu->allocateBuffers(data, bufferCount);
 	if (ret < 0) {
