This is the mail archive of the systemtap@sourceware.org mailing list for the systemtap project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug tapsets/16057] New: task_dentry_path fails to cross mount points


https://sourceware.org/bugzilla/show_bug.cgi?id=16057

            Bug ID: 16057
           Summary: task_dentry_path fails to cross mount points
           Product: systemtap
           Version: unspecified
            Status: NEW
          Severity: normal
          Priority: P2
         Component: tapsets
          Assignee: systemtap at sourceware dot org
          Reporter: jistone at redhat dot com

On kernel-3.11.4-201.fc19.x86_64, task_dentry_path always returns "<unknown>"
for paths which cross mount points.  This can only occur when real_mount
returns 0.  I found that it's failing the (vfsmnt > offset) test, because
vfsmnt as a signed quantity looks negative.  (AFAIK all kernel pointers will
have the MSB set.)

After fixing that test to allow "negative" pointers, the iteration hits bogus
pointer values for dentry and vfsmnt.  I got NULL, but on IRC ciupicri reported
values that look like random garbage.  I tracked this to the assignment:

  vfsmnt = @cast(mnt, "mount")->mnt_parent

... which is a problem because ->mnt_parent is another struct mount, not a
struct vfsmount as we are interpreting it from there.  This works for me:

  vfsmnt = &@cast(mnt, "mount")->mnt_parent->mnt


These bugs won't apply to kernels before the struct mount refactoring in 3.3.

-- 
You are receiving this mail because:
You are the assignee for the bug.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]