diff --git a/src/libcamera/v4l2_device.cpp b/src/libcamera/v4l2_device.cpp
index 0cd9f4b8e178..a88a5f5ff036 100644
--- a/src/libcamera/v4l2_device.cpp
+++ b/src/libcamera/v4l2_device.cpp
@@ -676,6 +676,7 @@ int V4L2Device::createPlane(Buffer *buffer, unsigned int planeIndex,
 	buffer->planes().emplace_back();
 	Plane &plane = buffer->planes().back();
 	plane.setDmabuf(expbuf.fd, length);
+	::close(expbuf.fd);
 
 	return 0;
 }
