diff --git a/src/libcamera/media_device.cpp b/src/libcamera/media_device.cpp
index de18d57..cd44902 100644
--- a/src/libcamera/media_device.cpp
+++ b/src/libcamera/media_device.cpp
@@ -780,11 +780,20 @@ void MediaDevice::fixupEntityFlags(struct media_v2_entity *entity)
  *
  * \return 0 on success or a negative error code otherwise
  */
-int MediaDevice::setupLink(const MediaLink *link, unsigned int flags)
+int MediaDevice::setupLink(const MediaLink *nlink, unsigned int flags)
 {
 	struct media_link_desc linkDesc = {};
-	MediaPad *source = link->source();
-	MediaPad *sink = link->sink();
+	MediaPad *source = nlink->source();
+	MediaPad *sink = nlink->sink();
+	MediaLink *elink;	// existing link
+
+	elink = link(source, sink);
+
+	if (elink == NULL) {
+		LOG(MediaDevice, Error)
+			<< __func__ << ": Link not found\n";
+		return -ENOENT;
+	}
 

 	linkDesc.source.entity = source->entity()->id();
