diff --git a/swh/model/from_disk.py b/swh/model/from_disk.py
--- a/swh/model/from_disk.py
+++ b/swh/model/from_disk.py
@@ -149,7 +149,9 @@
     @classmethod
     def from_symlink(cls, *, path, mode):
         """Convert a symbolic link to a Software Heritage content entry"""
-        return cls.from_bytes(mode=mode, data=os.readlink(path))
+        content = cls.from_bytes(mode=mode, data=os.readlink(path))
+        content.data["path"] = path
+        return content
 
     @classmethod
     def from_file(cls, *, path, max_content_length=None):
@@ -231,6 +233,7 @@
             data.pop("path", None)
             return model.SkippedContent.from_dict(data)
         elif "data" in data:
+            data.pop("path", None)
             return model.Content.from_dict(data)
         else:
             return DiskBackedContent.from_dict(data)
diff --git a/swh/model/tests/test_from_disk.py b/swh/model/tests/test_from_disk.py
--- a/swh/model/tests/test_from_disk.py
+++ b/swh/model/tests/test_from_disk.py
@@ -558,7 +558,9 @@
             path = os.path.join(self.tmpdir_name, filename)
             perms = 0o120000
             conv_content = Content.from_symlink(path=path, mode=perms)
-            self.assertContentEqual(conv_content, symlink)
+            symlink_copy = symlink.copy()
+            symlink_copy["path"] = path
+            self.assertContentEqual(conv_content, symlink_copy, check_path=True)
 
     def test_symlink_to_base_model(self):
         for filename, symlink in self.symlinks.items():