diff --git a/src/libcamera/media_device.cpp b/src/libcamera/media_device.cpp
index de18d57..007a45b 100644
--- a/src/libcamera/media_device.cpp
+++ b/src/libcamera/media_device.cpp
@@ -794,7 +794,7 @@ int MediaDevice::setupLink(const MediaLink *link, unsigned int flags)
 	linkDesc.sink.index = sink->index();
 	linkDesc.sink.flags = MEDIA_PAD_FL_SINK;
 

-	linkDesc.flags = flags;
+	linkDesc.flags = flags | (link->flags() & MEDIA_LNK_FL_IMMUTABLE);
 

