diff --git a/src/v4l2/v4l2_camera.cpp b/src/v4l2/v4l2_camera.cpp
index f7df9b8..ffc1230 100644
--- a/src/v4l2/v4l2_camera.cpp
+++ b/src/v4l2/v4l2_camera.cpp
@@ -147,6 +147,8 @@ int V4L2Camera::allocBuffers(unsigned int count)
 
 void V4L2Camera::freeBuffers()
 {
+	pendingRequests_.clear();
+
 	Stream *stream = *camera_->streams().begin();
 	bufferAllocator_->free(stream);
 }
@@ -188,10 +190,11 @@ int V4L2Camera::streamOn()
 
 int V4L2Camera::streamOff()
 {
-	/* \todo Restore buffers to reqbufs state? */
 	if (!isRunning_)
 		return 0;
 
+	pendingRequests_.clear();
+
 	int ret = camera_->stop();
 	if (ret < 0)
 		return ret == -EACCES ? -EBUSY : ret;
