diff --git a/src/libcamera/v4l2_videodevice.cpp
b/src/libcamera/v4l2_videodevice.cpp
index e30858c9fa02..108e60f035ab 100644
--- a/src/libcamera/v4l2_videodevice.cpp
+++ b/src/libcamera/v4l2_videodevice.cpp
@@ -758,7 +758,8 @@ void V4L2VideoDevice::close()
        if (!isOpen())
                return;

-       releaseBuffers();
+       if (cache_)
+               releaseBuffers();
        delete fdBufferNotifier_;

2) All pipeline handlers need to change and avoid calling device open() in
