diff --git a/src/libcamera/camera.cpp b/src/libcamera/camera.cpp
index bdf14b31d8ee..7f2dc904df16 100644
--- a/src/libcamera/camera.cpp
+++ b/src/libcamera/camera.cpp
@@ -671,6 +671,8 @@ int Camera::allocateBuffers()
  */
 int Camera::freeBuffers()
 {
+	int ret = 0;
+
 	if (!stateIs(CameraPrepared))
 		return -EACCES;
 
@@ -683,12 +685,12 @@ int Camera::freeBuffers()
 		 * by the V4L2 device that has allocated them.
 		 */
 		stream->bufferPool().destroyBuffers();
-		pipe_->freeBuffers(this, stream);
+		ret |= pipe_->freeBuffers(this, stream);
 	}
 
 	state_ = CameraConfigured;
 
-	return 0;
+	return ret;
 }
 
 /**
