lkml.org 
[lkml]   [2018]   [Apr]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH 2/2] perf/core: fix bad use of igrab in kernel/event/core.c
    On Tue, Apr 17, 2018 at 11:29:07PM -0700, Song Liu wrote:
    > As Miklos reported and suggested:
    >
    > This pattern repeats two times in trace_uprobe.c and in
    > kernel/events/core.c as well:
    >
    > ret = kern_path(filename, LOOKUP_FOLLOW, &path);
    > if (ret)
    > goto fail_address_parse;
    >
    > inode = igrab(d_inode(path.dentry));
    > path_put(&path);
    >
    > And it's wrong. You can only hold a reference to the inode if you
    > have an active ref to the superblock as well (which is normally
    > through path.mnt) or holding s_umount.

    Oops. I must have snatched it from the uprobe code without thinking.

    > This way unmounting the containing filesystem while the tracepoint is
    > active will give you the "VFS: Busy inodes after unmount..." message
    > and a crash when the inode is finally put.
    >
    > Solution: store path instead of inode.
    >
    > This patch fixes the issue in kernel/event/core.c.
    >
    > NOTE: Based on my understanding, perf_addr_filter only supports intel_pt.

    Coresight too, but that's probably even further away from what you have.

    > However, my test system doesn't support address filtering (or I made a
    > mistake?). Therefore, I have NOT tested this patch.

    Check /sys/devices/intel_pt/caps/num_address_ranges, if it's non-zero,
    it's supported.

    > Could someone please help test it?

    Yes:

    Reviewed-and-tested-by: Alexander Shishkin <alexander.shishkin@linux.intel.com>

    The subject line needs a little love to be more like other perf commits, but
    other than that, looks good.

    Thanks!

    \
     
     \ /
      Last update: 2018-04-19 08:18    [W:4.178 / U:0.540 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site