linux: dentry: Fix dentry type support for kernels pre-3.19

This commit is contained in:
Gustavo Moreira
2024-12-16 19:25:24 +11:00
parent b6717d80d9
commit bb1ff69e42
@@ -1107,9 +1107,16 @@ class dentry(objects.StructType):
walk_member = "d_sib"
list_head_member = self.d_children
elif self.has_member("d_child") and self.has_member("d_subdirs"):
# 2.5.0 <= kernels < 6.8
# 3.19.0 <= kernels < 6.8
walk_member = "d_child"
list_head_member = self.d_subdirs
elif self.has_member("d_u") and self.has_member("d_subdirs"):
# kernels < 3.19
# Actually, 'd_u.d_child' but to_list() doesn't support something like that.
# Since, it's an union, everything is at the same offset than 'd_u'.
walk_member = "d_u"
list_head_member = self.d_subdirs
else:
raise exceptions.VolatilityException("Unsupported dentry type")