Messages in this thread | | | Date | Fri, 20 Apr 2018 14:30:08 -0400 | From | Steven Rostedt <> | Subject | Re: [PATCH v3 1/2] tracing: fix bad use of igrab in trace_uprobe.c |
| |
On Fri, 20 Apr 2018 09:56:24 -0700 Song Liu <songliubraving@fb.com> wrote:
> s 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. > > 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 two instances in trace_uprobe.c. struct path is added to > struct trace_uprobe to keep the inode and containing mount point > referenced. > > Fixes: f3f096cfedf8 ("tracing: Provide trace events interface for uprobes") > Fixes: 33ea4b24277b ("perf/core: Implement the 'perf_uprobe' PMU") > Cc: Steven Rostedt <rostedt@goodmis.org> > Cc: Ingo Molnar <mingo@redhat.com> > Cc: Howard McLauchlan <hmclauchlan@fb.com> > Cc: Josef Bacik <jbacik@fb.com> > Cc: Srikar Dronamraju <srikar@linux.vnet.ibm.com> > Cc: Miklos Szeredi <miklos@szeredi.hu> > Reported-by: Miklos Szeredi <miklos@szeredi.hu> > Signed-off-by: Song Liu <songliubraving@fb.com> > ---
Can I get an Acked-by or Reviewed-by from someone?
Thanks!
-- Steve
| |