d_shortname of struct dentry only reserves D_NAME_INLINE_LEN characters and contains garbage for longer names. Use d_name instead, which always references the valid name.
Unified · Split
| @@ -22,7 +22,7 @@ def dentry_name(d): · 21 unmodified lines | |||
| 22 | if parent == d or parent == 0: | 22 | if parent == d or parent == 0: |
| 23 | return "" | 23 | return "" |
| 24 | p = dentry_name(d['d_parent']) + "/" | 24 | p = dentry_name(d['d_parent']) + "/" |
| 25 | return p + d['d_shortname']['string'].string() | 25 | return p + d['d_name']['name'].string() |
| 26 | 26 | ||
| 27 | class DentryName(gdb.Function): | 27 | class DentryName(gdb.Function): |
| 28 | """Return string of the full path of a dentry. | 28 | """Return string of the full path of a dentry. |