diff --git a/src/libcamera/request.cpp b/src/libcamera/request.cpp
index 163d8cf920..5f983e0ce6 100644
--- a/src/libcamera/request.cpp
+++ b/src/libcamera/request.cpp
@@ -143,6 +143,7 @@ void Request::Private::doCancelRequest()
 	for (FrameBuffer *buffer : pending_) {
 		buffer->_d()->cancel();
 		camera_->bufferCompleted.emit(request, buffer);
+		buffer->_d()->setRequest(nullptr);
 	}
 
 	cancelled_ = true;
