aboutsummaryrefslogtreecommitdiff
path: root/kernel/src/filesystem/dentry.cpp
diff options
context:
space:
mode:
authorFelix Morgner <felix.morgner@ost.ch>2026-06-14 15:28:55 +0200
committerFelix Morgner <felix.morgner@ost.ch>2026-06-14 15:28:55 +0200
commitdcfb1f3eb161c1e096626894667dfd2248893f7d (patch)
tree416a43826fe87174969a2e4cc7b2d589f6335ecd /kernel/src/filesystem/dentry.cpp
parentdd6537650ca7446a30b54aced340e17ad1b19f10 (diff)
downloadkernel-dcfb1f3eb161c1e096626894667dfd2248893f7d.tar.xz
kernel-dcfb1f3eb161c1e096626894667dfd2248893f7d.zip
kernel/vfs: fix reference cycle for dentries
Diffstat (limited to 'kernel/src/filesystem/dentry.cpp')
-rw-r--r--kernel/src/filesystem/dentry.cpp8
1 files changed, 4 insertions, 4 deletions
diff --git a/kernel/src/filesystem/dentry.cpp b/kernel/src/filesystem/dentry.cpp
index 3d8e01a..01de276 100644
--- a/kernel/src/filesystem/dentry.cpp
+++ b/kernel/src/filesystem/dentry.cpp
@@ -34,9 +34,9 @@ namespace kernel::filesystem
return m_inode;
}
- auto dentry::parent() const -> kstd::shared_ptr<dentry> const &
+ auto dentry::parent() const -> kstd::shared_ptr<dentry>
{
- return m_parent;
+ return m_parent.lock();
}
auto dentry::name() const -> std::string_view
@@ -48,7 +48,7 @@ namespace kernel::filesystem
{
kstd::string path = m_name;
- auto parent = m_parent;
+ auto parent = this->parent();
while (parent)
{
auto parent_name = parent->m_name;
@@ -61,7 +61,7 @@ namespace kernel::filesystem
path = parent_name + "/" + path;
}
- parent = parent->m_parent;
+ parent = parent->parent();
}
return path;