diff --git a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp b/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp
index f15fa28b..785eddf9 100644
--- a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp
+++ b/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp
@@ -337,6 +337,8 @@ public:
 
 	bool match(DeviceEnumerator *enumerator) override;
 
+	void releaseDevice(Camera *camera) override;
+
 private:
 	RPiCameraData *cameraData(Camera *camera)
 	{
@@ -1193,6 +1195,12 @@ bool PipelineHandlerRPi::match(DeviceEnumerator *enumerator)
 	return !!numCameras;
 }
 
+void PipelineHandlerRPi::releaseDevice(Camera *camera)
+{
+	RPiCameraData *data = cameraData(camera);
+	data->freeBuffers();
+}
+
 int PipelineHandlerRPi::registerCamera(MediaDevice *unicam, MediaDevice *isp, MediaEntity *sensorEntity)
 {
 	std::unique_ptr<RPiCameraData> data = std::make_unique<RPiCameraData>(this);
