Files
kernel_xiaomi_cepheus/include/linux
Song Liu 3cd62032ff perf/core: Fix bad use of igrab()
commit 9511bce9fe8e5e6c0f923c09243a713eba560141 upstream

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.

  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.

Reviewed-and-tested-by: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Reported-by: Miklos Szeredi <miklos@szeredi.hu>
Signed-off-by: Song Liu <songliubraving@fb.com>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Cc: <kernel-team@fb.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephane Eranian <eranian@google.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Vince Weaver <vincent.weaver@maine.edu>
Fixes: 375637bc52 ("perf/core: Introduce address range filtering")
Link: http://lkml.kernel.org/r/20180418062907.3210386-2-songliubraving@fb.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Signed-off-by: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2020-11-18 18:28:00 +01:00
..
2019-12-17 20:39:59 +01:00
2018-04-24 09:36:39 +02:00
2018-02-22 15:42:23 +01:00
2017-08-30 14:40:40 +02:00
2018-08-03 07:50:38 +02:00
2017-08-24 13:23:03 -07:00
2017-08-03 19:09:26 -07:00
2019-11-24 08:22:48 +01:00
2017-08-07 17:22:14 +02:00
2020-09-03 11:22:32 +02:00
2020-04-02 16:34:21 +02:00
2018-02-22 15:42:24 +01:00
2019-12-17 20:38:50 +01:00
2017-08-28 20:51:22 +02:00
2017-09-07 11:53:11 +02:00
2019-12-31 12:37:21 +01:00
2020-07-29 07:42:55 +02:00
2018-02-22 15:42:23 +01:00
2017-07-25 18:05:25 +02:00
2017-09-25 08:56:05 -06:00
2020-11-18 18:28:00 +01:00
2020-03-20 10:54:12 +01:00
2017-08-06 20:55:29 -07:00
2019-06-11 12:21:48 +02:00
2020-04-24 08:00:38 +02:00
2020-04-02 16:34:36 +02:00
2017-08-16 16:28:47 -07:00
2018-11-13 11:15:11 -08:00
2020-05-20 08:17:09 +02:00
2017-07-24 17:50:37 +02:00
2020-04-02 16:34:36 +02:00
2017-08-31 18:50:14 +02:00
2017-08-15 09:02:07 -07:00
2017-08-15 09:02:08 -07:00