From: kernel test robot <lkp@intel.com>
To: Gregory Greenman <gregory.greenman@intel.com>,
Golan Ben Ami <golan.ben.ami@intel.com>,
Michael Golant <michael.golant@intel.com>,
Johannes Berg <johannes.berg@intel.com>
Cc: oe-kbuild-all@lists.linux.dev
Subject: kernel/events/core.c:11620: warning: Function parameter or member 'flags' not described in 'ksys_perf_event_open'
Date: Thu, 17 Aug 2023 22:00:41 +0800 [thread overview]
Message-ID: <202308172107.L893kjMS-lkp@intel.com> (raw)
tree: https://git.kernel.org/pub/scm/linux/kernel/git/iwlwifi/chromeos.git chromeos-5.10__release/core59-42
head: e3fe4ac2447d89b8dca61663851e12d2f1247b56
commit: 973ecfea91914178c11cfb757e1bc29869a95f7f CHROMIUM: alt-syscall: Make required syscalls available for use
date: 2 years, 8 months ago
config: i386-randconfig-r015-20230817 (https://download.01.org/0day-ci/archive/20230817/202308172107.L893kjMS-lkp@intel.com/config)
compiler: gcc-12 (Debian 12.2.0-14) 12.2.0
reproduce: (https://download.01.org/0day-ci/archive/20230817/202308172107.L893kjMS-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202308172107.L893kjMS-lkp@intel.com/
All warnings (new ones prefixed by >>):
kernel/events/core.c:140: warning: Function parameter or member 'cpu' not described in 'cpu_function_call'
>> kernel/events/core.c:11620: warning: Function parameter or member 'flags' not described in 'ksys_perf_event_open'
kernel/events/core.c:12085: warning: Function parameter or member 'overflow_handler' not described in 'perf_event_create_kernel_counter'
kernel/events/core.c:12085: warning: Function parameter or member 'context' not described in 'perf_event_create_kernel_counter'
vim +11620 kernel/events/core.c
321027c1fe77f8 kernel/events/core.c Peter Zijlstra 2017-01-11 11609
0793a61d4df8da kernel/perf_counter.c Thomas Gleixner 2008-12-04 11610 /**
cdd6c482c9ff9c kernel/perf_event.c Ingo Molnar 2009-09-21 11611 * sys_perf_event_open - open a performance event, associate it to a task/cpu
9f66a3810fe0d4 kernel/perf_counter.c Ingo Molnar 2008-12-10 11612 *
cdd6c482c9ff9c kernel/perf_event.c Ingo Molnar 2009-09-21 11613 * @attr_uptr: event_id type attributes for monitoring/sampling
0793a61d4df8da kernel/perf_counter.c Thomas Gleixner 2008-12-04 11614 * @pid: target pid
9f66a3810fe0d4 kernel/perf_counter.c Ingo Molnar 2008-12-10 11615 * @cpu: target cpu
cdd6c482c9ff9c kernel/perf_event.c Ingo Molnar 2009-09-21 11616 * @group_fd: group leader event fd
0793a61d4df8da kernel/perf_counter.c Thomas Gleixner 2008-12-04 11617 */
973ecfea919141 kernel/events/core.c Guenter Roeck 2018-09-21 11618 int ksys_perf_event_open(struct perf_event_attr __user * attr_uptr, pid_t pid,
973ecfea919141 kernel/events/core.c Guenter Roeck 2018-09-21 11619 int cpu, int group_fd, unsigned long flags)
0793a61d4df8da kernel/perf_counter.c Thomas Gleixner 2008-12-04 @11620 {
b04243ef7006cd kernel/perf_event.c Peter Zijlstra 2010-09-17 11621 struct perf_event *group_leader = NULL, *output_event = NULL;
b04243ef7006cd kernel/perf_event.c Peter Zijlstra 2010-09-17 11622 struct perf_event *event, *sibling;
cdd6c482c9ff9c kernel/perf_event.c Ingo Molnar 2009-09-21 11623 struct perf_event_attr attr;
3f649ab728cda8 kernel/events/core.c Kees Cook 2020-06-03 11624 struct perf_event_context *ctx, *gctx;
cdd6c482c9ff9c kernel/perf_event.c Ingo Molnar 2009-09-21 11625 struct file *event_file = NULL;
2903ff019b346a kernel/events/core.c Al Viro 2012-08-28 11626 struct fd group = {NULL, 0};
38a81da2205f94 kernel/perf_event.c Matt Helsley 2010-09-13 11627 struct task_struct *task = NULL;
89a1e18731959e kernel/perf_event.c Peter Zijlstra 2010-09-07 11628 struct pmu *pmu;
ea635c64e00706 kernel/perf_event.c Al Viro 2010-05-26 11629 int event_fd;
b04243ef7006cd kernel/perf_event.c Peter Zijlstra 2010-09-17 11630 int move_group = 0;
dc86cabe4b2424 kernel/perf_counter.c Ingo Molnar 2009-09-03 11631 int err;
a21b0b354d4ac3 kernel/events/core.c Yann Droneaud 2014-01-05 11632 int f_flags = O_RDWR;
79dff51e900fd2 kernel/events/core.c Matt Fleming 2015-01-23 11633 int cgroup_fd = -1;
0793a61d4df8da kernel/perf_counter.c Thomas Gleixner 2008-12-04 11634
2743a5b0fa6f30 kernel/perf_counter.c Paul Mackerras 2009-03-04 11635 /* for future expandability... */
e5d1367f17ba6a kernel/perf_event.c Stephane Eranian 2011-02-14 11636 if (flags & ~PERF_FLAG_ALL)
2743a5b0fa6f30 kernel/perf_counter.c Paul Mackerras 2009-03-04 11637 return -EINVAL;
2743a5b0fa6f30 kernel/perf_counter.c Paul Mackerras 2009-03-04 11638
da97e18458fb42 kernel/events/core.c Joel Fernandes (Google 2019-10-14 11639) /* Do we allow access to perf_event_open(2) ? */
da97e18458fb42 kernel/events/core.c Joel Fernandes (Google 2019-10-14 11640) err = security_perf_event_open(&attr, PERF_SECURITY_OPEN);
da97e18458fb42 kernel/events/core.c Joel Fernandes (Google 2019-10-14 11641) if (err)
da97e18458fb42 kernel/events/core.c Joel Fernandes (Google 2019-10-14 11642) return err;
da97e18458fb42 kernel/events/core.c Joel Fernandes (Google 2019-10-14 11643)
dc86cabe4b2424 kernel/perf_counter.c Ingo Molnar 2009-09-03 11644 err = perf_copy_attr(attr_uptr, &attr);
dc86cabe4b2424 kernel/perf_counter.c Ingo Molnar 2009-09-03 11645 if (err)
dc86cabe4b2424 kernel/perf_counter.c Ingo Molnar 2009-09-03 11646 return err;
eab656ae04b9d3 kernel/perf_counter.c Thomas Gleixner 2008-12-08 11647
0764771dab80d7 kernel/perf_counter.c Peter Zijlstra 2009-06-11 11648 if (!attr.exclude_kernel) {
da97e18458fb42 kernel/events/core.c Joel Fernandes (Google 2019-10-14 11649) err = perf_allow_kernel(&attr);
da97e18458fb42 kernel/events/core.c Joel Fernandes (Google 2019-10-14 11650) if (err)
da97e18458fb42 kernel/events/core.c Joel Fernandes (Google 2019-10-14 11651) return err;
0764771dab80d7 kernel/perf_counter.c Peter Zijlstra 2009-06-11 11652 }
0764771dab80d7 kernel/perf_counter.c Peter Zijlstra 2009-06-11 11653
e422267322cd31 kernel/events/core.c Hari Bathini 2017-03-08 11654 if (attr.namespaces) {
18aa18566218d4 kernel/events/core.c Alexey Budankov 2020-04-02 11655 if (!perfmon_capable())
e422267322cd31 kernel/events/core.c Hari Bathini 2017-03-08 11656 return -EACCES;
e422267322cd31 kernel/events/core.c Hari Bathini 2017-03-08 11657 }
e422267322cd31 kernel/events/core.c Hari Bathini 2017-03-08 11658
df58ab24bf26b1 kernel/perf_counter.c Peter Zijlstra 2009-06-11 11659 if (attr.freq) {
cdd6c482c9ff9c kernel/perf_event.c Ingo Molnar 2009-09-21 11660 if (attr.sample_freq > sysctl_perf_event_sample_rate)
df58ab24bf26b1 kernel/perf_counter.c Peter Zijlstra 2009-06-11 11661 return -EINVAL;
0819b2e30ccb93 kernel/events/core.c Peter Zijlstra 2014-05-15 11662 } else {
0819b2e30ccb93 kernel/events/core.c Peter Zijlstra 2014-05-15 11663 if (attr.sample_period & (1ULL << 63))
0819b2e30ccb93 kernel/events/core.c Peter Zijlstra 2014-05-15 11664 return -EINVAL;
df58ab24bf26b1 kernel/perf_counter.c Peter Zijlstra 2009-06-11 11665 }
df58ab24bf26b1 kernel/perf_counter.c Peter Zijlstra 2009-06-11 11666
fc7ce9c74c3ad2 kernel/events/core.c Kan Liang 2017-08-28 11667 /* Only privileged users can get physical addresses */
da97e18458fb42 kernel/events/core.c Joel Fernandes (Google 2019-10-14 11668) if ((attr.sample_type & PERF_SAMPLE_PHYS_ADDR)) {
da97e18458fb42 kernel/events/core.c Joel Fernandes (Google 2019-10-14 11669) err = perf_allow_kernel(&attr);
da97e18458fb42 kernel/events/core.c Joel Fernandes (Google 2019-10-14 11670) if (err)
da97e18458fb42 kernel/events/core.c Joel Fernandes (Google 2019-10-14 11671) return err;
da97e18458fb42 kernel/events/core.c Joel Fernandes (Google 2019-10-14 11672) }
fc7ce9c74c3ad2 kernel/events/core.c Kan Liang 2017-08-28 11673
b0c8fdc7fdb775 kernel/events/core.c David Howells 2019-08-19 11674 err = security_locked_down(LOCKDOWN_PERF);
b0c8fdc7fdb775 kernel/events/core.c David Howells 2019-08-19 11675 if (err && (attr.sample_type & PERF_SAMPLE_REGS_INTR))
b0c8fdc7fdb775 kernel/events/core.c David Howells 2019-08-19 11676 /* REGS_INTR can leak data, lockdown must prevent this */
b0c8fdc7fdb775 kernel/events/core.c David Howells 2019-08-19 11677 return err;
b0c8fdc7fdb775 kernel/events/core.c David Howells 2019-08-19 11678
b0c8fdc7fdb775 kernel/events/core.c David Howells 2019-08-19 11679 err = 0;
b0c8fdc7fdb775 kernel/events/core.c David Howells 2019-08-19 11680
e5d1367f17ba6a kernel/perf_event.c Stephane Eranian 2011-02-14 11681 /*
e5d1367f17ba6a kernel/perf_event.c Stephane Eranian 2011-02-14 11682 * In cgroup mode, the pid argument is used to pass the fd
e5d1367f17ba6a kernel/perf_event.c Stephane Eranian 2011-02-14 11683 * opened to the cgroup directory in cgroupfs. The cpu argument
e5d1367f17ba6a kernel/perf_event.c Stephane Eranian 2011-02-14 11684 * designates the cpu on which to monitor threads from that
e5d1367f17ba6a kernel/perf_event.c Stephane Eranian 2011-02-14 11685 * cgroup.
e5d1367f17ba6a kernel/perf_event.c Stephane Eranian 2011-02-14 11686 */
e5d1367f17ba6a kernel/perf_event.c Stephane Eranian 2011-02-14 11687 if ((flags & PERF_FLAG_PID_CGROUP) && (pid == -1 || cpu == -1))
e5d1367f17ba6a kernel/perf_event.c Stephane Eranian 2011-02-14 11688 return -EINVAL;
e5d1367f17ba6a kernel/perf_event.c Stephane Eranian 2011-02-14 11689
a21b0b354d4ac3 kernel/events/core.c Yann Droneaud 2014-01-05 11690 if (flags & PERF_FLAG_FD_CLOEXEC)
a21b0b354d4ac3 kernel/events/core.c Yann Droneaud 2014-01-05 11691 f_flags |= O_CLOEXEC;
a21b0b354d4ac3 kernel/events/core.c Yann Droneaud 2014-01-05 11692
a21b0b354d4ac3 kernel/events/core.c Yann Droneaud 2014-01-05 11693 event_fd = get_unused_fd_flags(f_flags);
ea635c64e00706 kernel/perf_event.c Al Viro 2010-05-26 11694 if (event_fd < 0)
ea635c64e00706 kernel/perf_event.c Al Viro 2010-05-26 11695 return event_fd;
ea635c64e00706 kernel/perf_event.c Al Viro 2010-05-26 11696
ac9721f3f54b27 kernel/perf_event.c Peter Zijlstra 2010-05-27 11697 if (group_fd != -1) {
2903ff019b346a kernel/events/core.c Al Viro 2012-08-28 11698 err = perf_fget_light(group_fd, &group);
2903ff019b346a kernel/events/core.c Al Viro 2012-08-28 11699 if (err)
d14b12d7adbf21 kernel/perf_event.c Stephane Eranian 2010-09-17 11700 goto err_fd;
2903ff019b346a kernel/events/core.c Al Viro 2012-08-28 11701 group_leader = group.file->private_data;
ac9721f3f54b27 kernel/perf_event.c Peter Zijlstra 2010-05-27 11702 if (flags & PERF_FLAG_FD_OUTPUT)
ac9721f3f54b27 kernel/perf_event.c Peter Zijlstra 2010-05-27 11703 output_event = group_leader;
ac9721f3f54b27 kernel/perf_event.c Peter Zijlstra 2010-05-27 11704 if (flags & PERF_FLAG_FD_NO_GROUP)
ac9721f3f54b27 kernel/perf_event.c Peter Zijlstra 2010-05-27 11705 group_leader = NULL;
ac9721f3f54b27 kernel/perf_event.c Peter Zijlstra 2010-05-27 11706 }
ac9721f3f54b27 kernel/perf_event.c Peter Zijlstra 2010-05-27 11707
e5d1367f17ba6a kernel/perf_event.c Stephane Eranian 2011-02-14 11708 if (pid != -1 && !(flags & PERF_FLAG_PID_CGROUP)) {
c6be5a5cb62592 kernel/perf_event.c Peter Zijlstra 2010-10-14 11709 task = find_lively_task_by_vpid(pid);
c6be5a5cb62592 kernel/perf_event.c Peter Zijlstra 2010-10-14 11710 if (IS_ERR(task)) {
c6be5a5cb62592 kernel/perf_event.c Peter Zijlstra 2010-10-14 11711 err = PTR_ERR(task);
c6be5a5cb62592 kernel/perf_event.c Peter Zijlstra 2010-10-14 11712 goto err_group_fd;
c6be5a5cb62592 kernel/perf_event.c Peter Zijlstra 2010-10-14 11713 }
c6be5a5cb62592 kernel/perf_event.c Peter Zijlstra 2010-10-14 11714 }
c6be5a5cb62592 kernel/perf_event.c Peter Zijlstra 2010-10-14 11715
1f4ee5038f0c1e kernel/events/core.c Peter Zijlstra 2014-05-06 11716 if (task && group_leader &&
1f4ee5038f0c1e kernel/events/core.c Peter Zijlstra 2014-05-06 11717 group_leader->attr.inherit != attr.inherit) {
1f4ee5038f0c1e kernel/events/core.c Peter Zijlstra 2014-05-06 11718 err = -EINVAL;
1f4ee5038f0c1e kernel/events/core.c Peter Zijlstra 2014-05-06 11719 goto err_task;
1f4ee5038f0c1e kernel/events/core.c Peter Zijlstra 2014-05-06 11720 }
1f4ee5038f0c1e kernel/events/core.c Peter Zijlstra 2014-05-06 11721
79c9ce57eb2d5f kernel/events/core.c Peter Zijlstra 2016-04-26 11722 if (task) {
6914303824bb57 kernel/events/core.c Bernd Edlinger 2020-03-20 11723 err = mutex_lock_interruptible(&task->signal->exec_update_mutex);
79c9ce57eb2d5f kernel/events/core.c Peter Zijlstra 2016-04-26 11724 if (err)
e5aeee51f6b4fb kernel/events/core.c Alexander Levin 2017-06-03 11725 goto err_task;
79c9ce57eb2d5f kernel/events/core.c Peter Zijlstra 2016-04-26 11726
79c9ce57eb2d5f kernel/events/core.c Peter Zijlstra 2016-04-26 11727 /*
45fd22da97c612 kernel/events/core.c Alexey Budankov 2020-08-05 11728 * Preserve ptrace permission check for backwards compatibility.
79c9ce57eb2d5f kernel/events/core.c Peter Zijlstra 2016-04-26 11729 *
6914303824bb57 kernel/events/core.c Bernd Edlinger 2020-03-20 11730 * We must hold exec_update_mutex across this and any potential
79c9ce57eb2d5f kernel/events/core.c Peter Zijlstra 2016-04-26 11731 * perf_install_in_context() call for this new event to
79c9ce57eb2d5f kernel/events/core.c Peter Zijlstra 2016-04-26 11732 * serialize against exec() altering our credentials (and the
79c9ce57eb2d5f kernel/events/core.c Peter Zijlstra 2016-04-26 11733 * perf_event_exit_task() that could imply).
79c9ce57eb2d5f kernel/events/core.c Peter Zijlstra 2016-04-26 11734 */
79c9ce57eb2d5f kernel/events/core.c Peter Zijlstra 2016-04-26 11735 err = -EACCES;
45fd22da97c612 kernel/events/core.c Alexey Budankov 2020-08-05 11736 if (!perfmon_capable() && !ptrace_may_access(task, PTRACE_MODE_READ_REALCREDS))
79c9ce57eb2d5f kernel/events/core.c Peter Zijlstra 2016-04-26 11737 goto err_cred;
79c9ce57eb2d5f kernel/events/core.c Peter Zijlstra 2016-04-26 11738 }
79c9ce57eb2d5f kernel/events/core.c Peter Zijlstra 2016-04-26 11739
79dff51e900fd2 kernel/events/core.c Matt Fleming 2015-01-23 11740 if (flags & PERF_FLAG_PID_CGROUP)
79dff51e900fd2 kernel/events/core.c Matt Fleming 2015-01-23 11741 cgroup_fd = pid;
79dff51e900fd2 kernel/events/core.c Matt Fleming 2015-01-23 11742
4dc0da86967d54 kernel/events/core.c Avi Kivity 2011-06-29 11743 event = perf_event_alloc(&attr, cpu, task, group_leader, NULL,
79dff51e900fd2 kernel/events/core.c Matt Fleming 2015-01-23 11744 NULL, NULL, cgroup_fd);
d14b12d7adbf21 kernel/perf_event.c Stephane Eranian 2010-09-17 11745 if (IS_ERR(event)) {
d14b12d7adbf21 kernel/perf_event.c Stephane Eranian 2010-09-17 11746 err = PTR_ERR(event);
79c9ce57eb2d5f kernel/events/core.c Peter Zijlstra 2016-04-26 11747 goto err_cred;
d14b12d7adbf21 kernel/perf_event.c Stephane Eranian 2010-09-17 11748 }
d14b12d7adbf21 kernel/perf_event.c Stephane Eranian 2010-09-17 11749
53b25335dd6098 kernel/events/core.c Vince Weaver 2014-05-16 11750 if (is_sampling_event(event)) {
53b25335dd6098 kernel/events/core.c Vince Weaver 2014-05-16 11751 if (event->pmu->capabilities & PERF_PMU_CAP_NO_INTERRUPT) {
a1396555abff9f kernel/events/core.c Vineet Gupta 2016-05-09 11752 err = -EOPNOTSUPP;
53b25335dd6098 kernel/events/core.c Vince Weaver 2014-05-16 11753 goto err_alloc;
53b25335dd6098 kernel/events/core.c Vince Weaver 2014-05-16 11754 }
53b25335dd6098 kernel/events/core.c Vince Weaver 2014-05-16 11755 }
53b25335dd6098 kernel/events/core.c Vince Weaver 2014-05-16 11756
89a1e18731959e kernel/perf_event.c Peter Zijlstra 2010-09-07 11757 /*
89a1e18731959e kernel/perf_event.c Peter Zijlstra 2010-09-07 11758 * Special case software events and allow them to be part of
89a1e18731959e kernel/perf_event.c Peter Zijlstra 2010-09-07 11759 * any hardware group.
89a1e18731959e kernel/perf_event.c Peter Zijlstra 2010-09-07 11760 */
89a1e18731959e kernel/perf_event.c Peter Zijlstra 2010-09-07 11761 pmu = event->pmu;
b04243ef7006cd kernel/perf_event.c Peter Zijlstra 2010-09-17 11762
34f439278cef7b kernel/events/core.c Peter Zijlstra 2015-02-20 11763 if (attr.use_clockid) {
34f439278cef7b kernel/events/core.c Peter Zijlstra 2015-02-20 11764 err = perf_event_set_clock(event, attr.clockid);
34f439278cef7b kernel/events/core.c Peter Zijlstra 2015-02-20 11765 if (err)
34f439278cef7b kernel/events/core.c Peter Zijlstra 2015-02-20 11766 goto err_alloc;
34f439278cef7b kernel/events/core.c Peter Zijlstra 2015-02-20 11767 }
34f439278cef7b kernel/events/core.c Peter Zijlstra 2015-02-20 11768
4ff6a8debf48a7 kernel/events/core.c David Carrillo-Cisneros 2016-08-17 11769 if (pmu->task_ctx_nr == perf_sw_context)
4ff6a8debf48a7 kernel/events/core.c David Carrillo-Cisneros 2016-08-17 11770 event->event_caps |= PERF_EV_CAP_SOFTWARE;
4ff6a8debf48a7 kernel/events/core.c David Carrillo-Cisneros 2016-08-17 11771
a1150c202207cc kernel/events/core.c Song Liu 2018-05-03 11772 if (group_leader) {
a1150c202207cc kernel/events/core.c Song Liu 2018-05-03 11773 if (is_software_event(event) &&
a1150c202207cc kernel/events/core.c Song Liu 2018-05-03 11774 !in_software_context(group_leader)) {
b04243ef7006cd kernel/perf_event.c Peter Zijlstra 2010-09-17 11775 /*
a1150c202207cc kernel/events/core.c Song Liu 2018-05-03 11776 * If the event is a sw event, but the group_leader
a1150c202207cc kernel/events/core.c Song Liu 2018-05-03 11777 * is on hw context.
b04243ef7006cd kernel/perf_event.c Peter Zijlstra 2010-09-17 11778 *
a1150c202207cc kernel/events/core.c Song Liu 2018-05-03 11779 * Allow the addition of software events to hw
a1150c202207cc kernel/events/core.c Song Liu 2018-05-03 11780 * groups, this is safe because software events
a1150c202207cc kernel/events/core.c Song Liu 2018-05-03 11781 * never fail to schedule.
b04243ef7006cd kernel/perf_event.c Peter Zijlstra 2010-09-17 11782 */
a1150c202207cc kernel/events/core.c Song Liu 2018-05-03 11783 pmu = group_leader->ctx->pmu;
a1150c202207cc kernel/events/core.c Song Liu 2018-05-03 11784 } else if (!is_software_event(event) &&
a1150c202207cc kernel/events/core.c Song Liu 2018-05-03 11785 is_software_event(group_leader) &&
4ff6a8debf48a7 kernel/events/core.c David Carrillo-Cisneros 2016-08-17 11786 (group_leader->group_caps & PERF_EV_CAP_SOFTWARE)) {
b04243ef7006cd kernel/perf_event.c Peter Zijlstra 2010-09-17 11787 /*
b04243ef7006cd kernel/perf_event.c Peter Zijlstra 2010-09-17 11788 * In case the group is a pure software group, and we
b04243ef7006cd kernel/perf_event.c Peter Zijlstra 2010-09-17 11789 * try to add a hardware event, move the whole group to
b04243ef7006cd kernel/perf_event.c Peter Zijlstra 2010-09-17 11790 * the hardware context.
b04243ef7006cd kernel/perf_event.c Peter Zijlstra 2010-09-17 11791 */
b04243ef7006cd kernel/perf_event.c Peter Zijlstra 2010-09-17 11792 move_group = 1;
b04243ef7006cd kernel/perf_event.c Peter Zijlstra 2010-09-17 11793 }
b04243ef7006cd kernel/perf_event.c Peter Zijlstra 2010-09-17 11794 }
89a1e18731959e kernel/perf_event.c Peter Zijlstra 2010-09-07 11795
89a1e18731959e kernel/perf_event.c Peter Zijlstra 2010-09-07 11796 /*
89a1e18731959e kernel/perf_event.c Peter Zijlstra 2010-09-07 11797 * Get the target context (task or percpu):
89a1e18731959e kernel/perf_event.c Peter Zijlstra 2010-09-07 11798 */
4af57ef28c2c10 kernel/events/core.c Yan, Zheng 2014-11-04 11799 ctx = find_get_context(pmu, task, event);
89a1e18731959e kernel/perf_event.c Peter Zijlstra 2010-09-07 11800 if (IS_ERR(ctx)) {
89a1e18731959e kernel/perf_event.c Peter Zijlstra 2010-09-07 11801 err = PTR_ERR(ctx);
c6be5a5cb62592 kernel/perf_event.c Peter Zijlstra 2010-10-14 11802 goto err_alloc;
89a1e18731959e kernel/perf_event.c Peter Zijlstra 2010-09-07 11803 }
89a1e18731959e kernel/perf_event.c Peter Zijlstra 2010-09-07 11804
ccff286d85098b kernel/perf_counter.c Ingo Molnar 2008-12-11 11805 /*
cdd6c482c9ff9c kernel/perf_event.c Ingo Molnar 2009-09-21 11806 * Look up the group leader (we will attach this event to it):
04289bb9891882 kernel/perf_counter.c Ingo Molnar 2008-12-11 11807 */
ac9721f3f54b27 kernel/perf_event.c Peter Zijlstra 2010-05-27 11808 if (group_leader) {
dc86cabe4b2424 kernel/perf_counter.c Ingo Molnar 2009-09-03 11809 err = -EINVAL;
04289bb9891882 kernel/perf_counter.c Ingo Molnar 2008-12-11 11810
04289bb9891882 kernel/perf_counter.c Ingo Molnar 2008-12-11 11811 /*
ccff286d85098b kernel/perf_counter.c Ingo Molnar 2008-12-11 11812 * Do not allow a recursive hierarchy (this new sibling
ccff286d85098b kernel/perf_counter.c Ingo Molnar 2008-12-11 11813 * becoming part of another group-sibling):
04289bb9891882 kernel/perf_counter.c Ingo Molnar 2008-12-11 11814 */
ccff286d85098b kernel/perf_counter.c Ingo Molnar 2008-12-11 11815 if (group_leader->group_leader != group_leader)
c3f00c70276d8a kernel/perf_event.c Peter Zijlstra 2010-08-18 11816 goto err_context;
34f439278cef7b kernel/events/core.c Peter Zijlstra 2015-02-20 11817
34f439278cef7b kernel/events/core.c Peter Zijlstra 2015-02-20 11818 /* All events in a group should have the same clock */
34f439278cef7b kernel/events/core.c Peter Zijlstra 2015-02-20 11819 if (group_leader->clock != event->clock)
34f439278cef7b kernel/events/core.c Peter Zijlstra 2015-02-20 11820 goto err_context;
34f439278cef7b kernel/events/core.c Peter Zijlstra 2015-02-20 11821
04289bb9891882 kernel/perf_counter.c Ingo Molnar 2008-12-11 11822 /*
64aee2a965cf29 kernel/events/core.c Mark Rutland 2017-06-22 11823 * Make sure we're both events for the same CPU;
64aee2a965cf29 kernel/events/core.c Mark Rutland 2017-06-22 11824 * grouping events for different CPUs is broken; since
64aee2a965cf29 kernel/events/core.c Mark Rutland 2017-06-22 11825 * you can never concurrently schedule them anyhow.
04289bb9891882 kernel/perf_counter.c Ingo Molnar 2008-12-11 11826 */
64aee2a965cf29 kernel/events/core.c Mark Rutland 2017-06-22 11827 if (group_leader->cpu != event->cpu)
64aee2a965cf29 kernel/events/core.c Mark Rutland 2017-06-22 11828 goto err_context;
64aee2a965cf29 kernel/events/core.c Mark Rutland 2017-06-22 11829
c3c87e770458aa kernel/events/core.c Peter Zijlstra 2015-01-23 11830 /*
c3c87e770458aa kernel/events/core.c Peter Zijlstra 2015-01-23 11831 * Make sure we're both on the same task, or both
64aee2a965cf29 kernel/events/core.c Mark Rutland 2017-06-22 11832 * per-CPU events.
c3c87e770458aa kernel/events/core.c Peter Zijlstra 2015-01-23 11833 */
c3c87e770458aa kernel/events/core.c Peter Zijlstra 2015-01-23 11834 if (group_leader->ctx->task != ctx->task)
c3c87e770458aa kernel/events/core.c Peter Zijlstra 2015-01-23 11835 goto err_context;
c3c87e770458aa kernel/events/core.c Peter Zijlstra 2015-01-23 11836
c3c87e770458aa kernel/events/core.c Peter Zijlstra 2015-01-23 11837 /*
64aee2a965cf29 kernel/events/core.c Mark Rutland 2017-06-22 11838 * Do not allow to attach to a group in a different task
64aee2a965cf29 kernel/events/core.c Mark Rutland 2017-06-22 11839 * or CPU context. If we're moving SW events, we'll fix
64aee2a965cf29 kernel/events/core.c Mark Rutland 2017-06-22 11840 * this up later, so allow that.
c3c87e770458aa kernel/events/core.c Peter Zijlstra 2015-01-23 11841 */
64aee2a965cf29 kernel/events/core.c Mark Rutland 2017-06-22 11842 if (!move_group && group_leader->ctx != ctx)
b04243ef7006cd kernel/perf_event.c Peter Zijlstra 2010-09-17 11843 goto err_context;
b04243ef7006cd kernel/perf_event.c Peter Zijlstra 2010-09-17 11844
3b6f9e5cb21964 kernel/perf_counter.c Paul Mackerras 2009-01-14 11845 /*
3b6f9e5cb21964 kernel/perf_counter.c Paul Mackerras 2009-01-14 11846 * Only a group leader can be exclusive or pinned
3b6f9e5cb21964 kernel/perf_counter.c Paul Mackerras 2009-01-14 11847 */
0d48696f87e361 kernel/perf_counter.c Peter Zijlstra 2009-06-02 11848 if (attr.exclusive || attr.pinned)
c3f00c70276d8a kernel/perf_event.c Peter Zijlstra 2010-08-18 11849 goto err_context;
ac9721f3f54b27 kernel/perf_event.c Peter Zijlstra 2010-05-27 11850 }
ac9721f3f54b27 kernel/perf_event.c Peter Zijlstra 2010-05-27 11851
ac9721f3f54b27 kernel/perf_event.c Peter Zijlstra 2010-05-27 11852 if (output_event) {
ac9721f3f54b27 kernel/perf_event.c Peter Zijlstra 2010-05-27 11853 err = perf_event_set_output(event, output_event);
ac9721f3f54b27 kernel/perf_event.c Peter Zijlstra 2010-05-27 11854 if (err)
c3f00c70276d8a kernel/perf_event.c Peter Zijlstra 2010-08-18 11855 goto err_context;
ac9721f3f54b27 kernel/perf_event.c Peter Zijlstra 2010-05-27 11856 }
0793a61d4df8da kernel/perf_counter.c Thomas Gleixner 2008-12-04 11857
a21b0b354d4ac3 kernel/events/core.c Yann Droneaud 2014-01-05 11858 event_file = anon_inode_getfile("[perf_event]", &perf_fops, event,
a21b0b354d4ac3 kernel/events/core.c Yann Droneaud 2014-01-05 11859 f_flags);
ea635c64e00706 kernel/perf_event.c Al Viro 2010-05-26 11860 if (IS_ERR(event_file)) {
ea635c64e00706 kernel/perf_event.c Al Viro 2010-05-26 11861 err = PTR_ERR(event_file);
201c2f85bd0bc1 kernel/events/core.c Alexander Shishkin 2016-03-21 11862 event_file = NULL;
c3f00c70276d8a kernel/perf_event.c Peter Zijlstra 2010-08-18 11863 goto err_context;
ea635c64e00706 kernel/perf_event.c Al Viro 2010-05-26 11864 }
9b51f66dcb09ac kernel/perf_counter.c Ingo Molnar 2008-12-12 11865
b04243ef7006cd kernel/perf_event.c Peter Zijlstra 2010-09-17 11866 if (move_group) {
321027c1fe77f8 kernel/events/core.c Peter Zijlstra 2017-01-11 11867 gctx = __perf_event_ctx_lock_double(group_leader, ctx);
321027c1fe77f8 kernel/events/core.c Peter Zijlstra 2017-01-11 11868
84c4e620d35f49 kernel/events/core.c Peter Zijlstra 2016-02-24 11869 if (gctx->task == TASK_TOMBSTONE) {
84c4e620d35f49 kernel/events/core.c Peter Zijlstra 2016-02-24 11870 err = -ESRCH;
84c4e620d35f49 kernel/events/core.c Peter Zijlstra 2016-02-24 11871 goto err_locked;
84c4e620d35f49 kernel/events/core.c Peter Zijlstra 2016-02-24 11872 }
321027c1fe77f8 kernel/events/core.c Peter Zijlstra 2017-01-11 11873
321027c1fe77f8 kernel/events/core.c Peter Zijlstra 2017-01-11 11874 /*
321027c1fe77f8 kernel/events/core.c Peter Zijlstra 2017-01-11 11875 * Check if we raced against another sys_perf_event_open() call
321027c1fe77f8 kernel/events/core.c Peter Zijlstra 2017-01-11 11876 * moving the software group underneath us.
321027c1fe77f8 kernel/events/core.c Peter Zijlstra 2017-01-11 11877 */
321027c1fe77f8 kernel/events/core.c Peter Zijlstra 2017-01-11 11878 if (!(group_leader->group_caps & PERF_EV_CAP_SOFTWARE)) {
321027c1fe77f8 kernel/events/core.c Peter Zijlstra 2017-01-11 11879 /*
321027c1fe77f8 kernel/events/core.c Peter Zijlstra 2017-01-11 11880 * If someone moved the group out from under us, check
321027c1fe77f8 kernel/events/core.c Peter Zijlstra 2017-01-11 11881 * if this new event wound up on the same ctx, if so
321027c1fe77f8 kernel/events/core.c Peter Zijlstra 2017-01-11 11882 * its the regular !move_group case, otherwise fail.
321027c1fe77f8 kernel/events/core.c Peter Zijlstra 2017-01-11 11883 */
321027c1fe77f8 kernel/events/core.c Peter Zijlstra 2017-01-11 11884 if (gctx != ctx) {
321027c1fe77f8 kernel/events/core.c Peter Zijlstra 2017-01-11 11885 err = -EINVAL;
321027c1fe77f8 kernel/events/core.c Peter Zijlstra 2017-01-11 11886 goto err_locked;
321027c1fe77f8 kernel/events/core.c Peter Zijlstra 2017-01-11 11887 } else {
321027c1fe77f8 kernel/events/core.c Peter Zijlstra 2017-01-11 11888 perf_event_ctx_unlock(group_leader, gctx);
321027c1fe77f8 kernel/events/core.c Peter Zijlstra 2017-01-11 11889 move_group = 0;
321027c1fe77f8 kernel/events/core.c Peter Zijlstra 2017-01-11 11890 }
321027c1fe77f8 kernel/events/core.c Peter Zijlstra 2017-01-11 11891 }
8a58ddae23796c kernel/events/core.c Alexander Shishkin 2019-07-01 11892
8a58ddae23796c kernel/events/core.c Alexander Shishkin 2019-07-01 11893 /*
8a58ddae23796c kernel/events/core.c Alexander Shishkin 2019-07-01 11894 * Failure to create exclusive events returns -EBUSY.
8a58ddae23796c kernel/events/core.c Alexander Shishkin 2019-07-01 11895 */
8a58ddae23796c kernel/events/core.c Alexander Shishkin 2019-07-01 11896 err = -EBUSY;
8a58ddae23796c kernel/events/core.c Alexander Shishkin 2019-07-01 11897 if (!exclusive_event_installable(group_leader, ctx))
8a58ddae23796c kernel/events/core.c Alexander Shishkin 2019-07-01 11898 goto err_locked;
8a58ddae23796c kernel/events/core.c Alexander Shishkin 2019-07-01 11899
8a58ddae23796c kernel/events/core.c Alexander Shishkin 2019-07-01 11900 for_each_sibling_event(sibling, group_leader) {
8a58ddae23796c kernel/events/core.c Alexander Shishkin 2019-07-01 11901 if (!exclusive_event_installable(sibling, ctx))
8a58ddae23796c kernel/events/core.c Alexander Shishkin 2019-07-01 11902 goto err_locked;
8a58ddae23796c kernel/events/core.c Alexander Shishkin 2019-07-01 11903 }
f55fc2a57cc9ca kernel/events/core.c Peter Zijlstra 2015-09-09 11904 } else {
f55fc2a57cc9ca kernel/events/core.c Peter Zijlstra 2015-09-09 11905 mutex_lock(&ctx->mutex);
f55fc2a57cc9ca kernel/events/core.c Peter Zijlstra 2015-09-09 11906 }
f63a8daa5812af kernel/events/core.c Peter Zijlstra 2015-01-23 11907
84c4e620d35f49 kernel/events/core.c Peter Zijlstra 2016-02-24 11908 if (ctx->task == TASK_TOMBSTONE) {
84c4e620d35f49 kernel/events/core.c Peter Zijlstra 2016-02-24 11909 err = -ESRCH;
84c4e620d35f49 kernel/events/core.c Peter Zijlstra 2016-02-24 11910 goto err_locked;
84c4e620d35f49 kernel/events/core.c Peter Zijlstra 2016-02-24 11911 }
84c4e620d35f49 kernel/events/core.c Peter Zijlstra 2016-02-24 11912
a723968c0ed36d kernel/events/core.c Peter Zijlstra 2015-09-09 11913 if (!perf_event_validate_size(event)) {
a723968c0ed36d kernel/events/core.c Peter Zijlstra 2015-09-09 11914 err = -E2BIG;
a723968c0ed36d kernel/events/core.c Peter Zijlstra 2015-09-09 11915 goto err_locked;
a723968c0ed36d kernel/events/core.c Peter Zijlstra 2015-09-09 11916 }
a723968c0ed36d kernel/events/core.c Peter Zijlstra 2015-09-09 11917
a63fbed776c712 kernel/events/core.c Thomas Gleixner 2017-05-24 11918 if (!task) {
a63fbed776c712 kernel/events/core.c Thomas Gleixner 2017-05-24 11919 /*
a63fbed776c712 kernel/events/core.c Thomas Gleixner 2017-05-24 11920 * Check if the @cpu we're creating an event for is online.
a63fbed776c712 kernel/events/core.c Thomas Gleixner 2017-05-24 11921 *
a63fbed776c712 kernel/events/core.c Thomas Gleixner 2017-05-24 11922 * We use the perf_cpu_context::ctx::mutex to serialize against
a63fbed776c712 kernel/events/core.c Thomas Gleixner 2017-05-24 11923 * the hotplug notifiers. See perf_event_{init,exit}_cpu().
a63fbed776c712 kernel/events/core.c Thomas Gleixner 2017-05-24 11924 */
a63fbed776c712 kernel/events/core.c Thomas Gleixner 2017-05-24 11925 struct perf_cpu_context *cpuctx =
a63fbed776c712 kernel/events/core.c Thomas Gleixner 2017-05-24 11926 container_of(ctx, struct perf_cpu_context, ctx);
a63fbed776c712 kernel/events/core.c Thomas Gleixner 2017-05-24 11927
a63fbed776c712 kernel/events/core.c Thomas Gleixner 2017-05-24 11928 if (!cpuctx->online) {
a63fbed776c712 kernel/events/core.c Thomas Gleixner 2017-05-24 11929 err = -ENODEV;
a63fbed776c712 kernel/events/core.c Thomas Gleixner 2017-05-24 11930 goto err_locked;
a63fbed776c712 kernel/events/core.c Thomas Gleixner 2017-05-24 11931 }
a63fbed776c712 kernel/events/core.c Thomas Gleixner 2017-05-24 11932 }
a63fbed776c712 kernel/events/core.c Thomas Gleixner 2017-05-24 11933
da9ec3d3dd0f12 kernel/events/core.c Mark Rutland 2020-01-06 11934 if (perf_need_aux_event(event) && !perf_get_aux_event(event, group_leader)) {
da9ec3d3dd0f12 kernel/events/core.c Mark Rutland 2020-01-06 11935 err = -EINVAL;
ab43762ef01096 kernel/events/core.c Alexander Shishkin 2019-08-06 11936 goto err_locked;
da9ec3d3dd0f12 kernel/events/core.c Mark Rutland 2020-01-06 11937 }
a63fbed776c712 kernel/events/core.c Thomas Gleixner 2017-05-24 11938
f55fc2a57cc9ca kernel/events/core.c Peter Zijlstra 2015-09-09 11939 /*
f55fc2a57cc9ca kernel/events/core.c Peter Zijlstra 2015-09-09 11940 * Must be under the same ctx::mutex as perf_install_in_context(),
f55fc2a57cc9ca kernel/events/core.c Peter Zijlstra 2015-09-09 11941 * because we need to serialize with concurrent event creation.
f55fc2a57cc9ca kernel/events/core.c Peter Zijlstra 2015-09-09 11942 */
f55fc2a57cc9ca kernel/events/core.c Peter Zijlstra 2015-09-09 11943 if (!exclusive_event_installable(event, ctx)) {
f55fc2a57cc9ca kernel/events/core.c Peter Zijlstra 2015-09-09 11944 err = -EBUSY;
f55fc2a57cc9ca kernel/events/core.c Peter Zijlstra 2015-09-09 11945 goto err_locked;
f55fc2a57cc9ca kernel/events/core.c Peter Zijlstra 2015-09-09 11946 }
f63a8daa5812af kernel/events/core.c Peter Zijlstra 2015-01-23 11947
f55fc2a57cc9ca kernel/events/core.c Peter Zijlstra 2015-09-09 11948 WARN_ON_ONCE(ctx->parent_ctx);
f55fc2a57cc9ca kernel/events/core.c Peter Zijlstra 2015-09-09 11949
79c9ce57eb2d5f kernel/events/core.c Peter Zijlstra 2016-04-26 11950 /*
79c9ce57eb2d5f kernel/events/core.c Peter Zijlstra 2016-04-26 11951 * This is the point on no return; we cannot fail hereafter. This is
79c9ce57eb2d5f kernel/events/core.c Peter Zijlstra 2016-04-26 11952 * where we start modifying current state.
79c9ce57eb2d5f kernel/events/core.c Peter Zijlstra 2016-04-26 11953 */
79c9ce57eb2d5f kernel/events/core.c Peter Zijlstra 2016-04-26 11954
f55fc2a57cc9ca kernel/events/core.c Peter Zijlstra 2015-09-09 11955 if (move_group) {
f63a8daa5812af kernel/events/core.c Peter Zijlstra 2015-01-23 11956 /*
f63a8daa5812af kernel/events/core.c Peter Zijlstra 2015-01-23 11957 * See perf_event_ctx_lock() for comments on the details
f63a8daa5812af kernel/events/core.c Peter Zijlstra 2015-01-23 11958 * of swizzling perf_event::ctx.
f63a8daa5812af kernel/events/core.c Peter Zijlstra 2015-01-23 11959 */
45a0e07abf4933 kernel/events/core.c Peter Zijlstra 2016-01-26 11960 perf_remove_from_context(group_leader, 0);
279b5165ffadf5 kernel/events/core.c Peter Zijlstra 2017-02-16 11961 put_ctx(gctx);
0231bb53367584 kernel/events/core.c Jiri Olsa 2013-02-01 11962
edb39592a5877b kernel/events/core.c Peter Zijlstra 2018-03-15 11963 for_each_sibling_event(sibling, group_leader) {
45a0e07abf4933 kernel/events/core.c Peter Zijlstra 2016-01-26 11964 perf_remove_from_context(sibling, 0);
b04243ef7006cd kernel/perf_event.c Peter Zijlstra 2010-09-17 11965 put_ctx(gctx);
b04243ef7006cd kernel/perf_event.c Peter Zijlstra 2010-09-17 11966 }
9b51f66dcb09ac kernel/perf_counter.c Ingo Molnar 2008-12-12 11967
f63a8daa5812af kernel/events/core.c Peter Zijlstra 2015-01-23 11968 /*
f63a8daa5812af kernel/events/core.c Peter Zijlstra 2015-01-23 11969 * Wait for everybody to stop referencing the events through
f63a8daa5812af kernel/events/core.c Peter Zijlstra 2015-01-23 11970 * the old lists, before installing it on new lists.
f63a8daa5812af kernel/events/core.c Peter Zijlstra 2015-01-23 11971 */
0cda4c023132aa kernel/events/core.c Yan, Zheng 2012-06-15 11972 synchronize_rcu();
f63a8daa5812af kernel/events/core.c Peter Zijlstra 2015-01-23 11973
8f95b435b62522 kernel/events/core.c Peter Zijlstra (Intel 2015-01-27 11974) /*
8f95b435b62522 kernel/events/core.c Peter Zijlstra (Intel 2015-01-27 11975) * Install the group siblings before the group leader.
8f95b435b62522 kernel/events/core.c Peter Zijlstra (Intel 2015-01-27 11976) *
8f95b435b62522 kernel/events/core.c Peter Zijlstra (Intel 2015-01-27 11977) * Because a group leader will try and install the entire group
8f95b435b62522 kernel/events/core.c Peter Zijlstra (Intel 2015-01-27 11978) * (through the sibling list, which is still in-tact), we can
8f95b435b62522 kernel/events/core.c Peter Zijlstra (Intel 2015-01-27 11979) * end up with siblings installed in the wrong context.
8f95b435b62522 kernel/events/core.c Peter Zijlstra (Intel 2015-01-27 11980) *
8f95b435b62522 kernel/events/core.c Peter Zijlstra (Intel 2015-01-27 11981) * By installing siblings first we NO-OP because they're not
8f95b435b62522 kernel/events/core.c Peter Zijlstra (Intel 2015-01-27 11982) * reachable through the group lists.
8f95b435b62522 kernel/events/core.c Peter Zijlstra (Intel 2015-01-27 11983) */
edb39592a5877b kernel/events/core.c Peter Zijlstra 2018-03-15 11984 for_each_sibling_event(sibling, group_leader) {
8f95b435b62522 kernel/events/core.c Peter Zijlstra (Intel 2015-01-27 11985) perf_event__state_init(sibling);
9fc81d87420d0d kernel/events/core.c Jiri Olsa 2014-12-10 11986 perf_install_in_context(ctx, sibling, sibling->cpu);
b04243ef7006cd kernel/perf_event.c Peter Zijlstra 2010-09-17 11987 get_ctx(ctx);
b04243ef7006cd kernel/perf_event.c Peter Zijlstra 2010-09-17 11988 }
8f95b435b62522 kernel/events/core.c Peter Zijlstra (Intel 2015-01-27 11989)
8f95b435b62522 kernel/events/core.c Peter Zijlstra (Intel 2015-01-27 11990) /*
8f95b435b62522 kernel/events/core.c Peter Zijlstra (Intel 2015-01-27 11991) * Removing from the context ends up with disabled
8f95b435b62522 kernel/events/core.c Peter Zijlstra (Intel 2015-01-27 11992) * event. What we want here is event in the initial
8f95b435b62522 kernel/events/core.c Peter Zijlstra (Intel 2015-01-27 11993) * startup state, ready to be add into new context.
8f95b435b62522 kernel/events/core.c Peter Zijlstra (Intel 2015-01-27 11994) */
8f95b435b62522 kernel/events/core.c Peter Zijlstra (Intel 2015-01-27 11995) perf_event__state_init(group_leader);
8f95b435b62522 kernel/events/core.c Peter Zijlstra (Intel 2015-01-27 11996) perf_install_in_context(ctx, group_leader, group_leader->cpu);
8f95b435b62522 kernel/events/core.c Peter Zijlstra (Intel 2015-01-27 11997) get_ctx(ctx);
bed5b25ad9c8a2 kernel/events/core.c Alexander Shishkin 2015-01-30 11998 }
bed5b25ad9c8a2 kernel/events/core.c Alexander Shishkin 2015-01-30 11999
f73e22ab450140 kernel/events/core.c Peter Zijlstra 2015-09-09 12000 /*
f73e22ab450140 kernel/events/core.c Peter Zijlstra 2015-09-09 12001 * Precalculate sample_data sizes; do while holding ctx::mutex such
f73e22ab450140 kernel/events/core.c Peter Zijlstra 2015-09-09 12002 * that we're serialized against further additions and before
f73e22ab450140 kernel/events/core.c Peter Zijlstra 2015-09-09 12003 * perf_install_in_context() which is the point the event is active and
f73e22ab450140 kernel/events/core.c Peter Zijlstra 2015-09-09 12004 * can use these values.
f73e22ab450140 kernel/events/core.c Peter Zijlstra 2015-09-09 12005 */
f73e22ab450140 kernel/events/core.c Peter Zijlstra 2015-09-09 12006 perf_event__header_size(event);
f73e22ab450140 kernel/events/core.c Peter Zijlstra 2015-09-09 12007 perf_event__id_header_size(event);
f73e22ab450140 kernel/events/core.c Peter Zijlstra 2015-09-09 12008
78cd2c748f4597 kernel/events/core.c Peter Zijlstra 2016-01-25 12009 event->owner = current;
78cd2c748f4597 kernel/events/core.c Peter Zijlstra 2016-01-25 12010
e2d37cd213dcc0 kernel/events/core.c Yan, Zheng 2012-06-15 12011 perf_install_in_context(ctx, event, event->cpu);
fe4b04fa31a6dc kernel/perf_event.c Peter Zijlstra 2011-02-02 12012 perf_unpin_context(ctx);
f63a8daa5812af kernel/events/core.c Peter Zijlstra 2015-01-23 12013
f55fc2a57cc9ca kernel/events/core.c Peter Zijlstra 2015-09-09 12014 if (move_group)
321027c1fe77f8 kernel/events/core.c Peter Zijlstra 2017-01-11 12015 perf_event_ctx_unlock(group_leader, gctx);
d859e29fe34cb8 kernel/perf_counter.c Paul Mackerras 2009-01-17 12016 mutex_unlock(&ctx->mutex);
9b51f66dcb09ac kernel/perf_counter.c Ingo Molnar 2008-12-12 12017
79c9ce57eb2d5f kernel/events/core.c Peter Zijlstra 2016-04-26 12018 if (task) {
6914303824bb57 kernel/events/core.c Bernd Edlinger 2020-03-20 12019 mutex_unlock(&task->signal->exec_update_mutex);
79c9ce57eb2d5f kernel/events/core.c Peter Zijlstra 2016-04-26 12020 put_task_struct(task);
79c9ce57eb2d5f kernel/events/core.c Peter Zijlstra 2016-04-26 12021 }
79c9ce57eb2d5f kernel/events/core.c Peter Zijlstra 2016-04-26 12022
cdd6c482c9ff9c kernel/perf_event.c Ingo Molnar 2009-09-21 12023 mutex_lock(¤t->perf_event_mutex);
cdd6c482c9ff9c kernel/perf_event.c Ingo Molnar 2009-09-21 12024 list_add_tail(&event->owner_entry, ¤t->perf_event_list);
cdd6c482c9ff9c kernel/perf_event.c Ingo Molnar 2009-09-21 12025 mutex_unlock(¤t->perf_event_mutex);
082ff5a2767a06 kernel/perf_counter.c Peter Zijlstra 2009-05-23 12026
8a49542c0554af kernel/perf_event.c Peter Zijlstra 2010-05-27 12027 /*
8a49542c0554af kernel/perf_event.c Peter Zijlstra 2010-05-27 12028 * Drop the reference on the group_event after placing the
8a49542c0554af kernel/perf_event.c Peter Zijlstra 2010-05-27 12029 * new event on the sibling_list. This ensures destruction
8a49542c0554af kernel/perf_event.c Peter Zijlstra 2010-05-27 12030 * of the group leader will find the pointer to itself in
8a49542c0554af kernel/perf_event.c Peter Zijlstra 2010-05-27 12031 * perf_group_detach().
8a49542c0554af kernel/perf_event.c Peter Zijlstra 2010-05-27 12032 */
2903ff019b346a kernel/events/core.c Al Viro 2012-08-28 12033 fdput(group);
ea635c64e00706 kernel/perf_event.c Al Viro 2010-05-26 12034 fd_install(event_fd, event_file);
ea635c64e00706 kernel/perf_event.c Al Viro 2010-05-26 12035 return event_fd;
0793a61d4df8da kernel/perf_counter.c Thomas Gleixner 2008-12-04 12036
f55fc2a57cc9ca kernel/events/core.c Peter Zijlstra 2015-09-09 12037 err_locked:
f55fc2a57cc9ca kernel/events/core.c Peter Zijlstra 2015-09-09 12038 if (move_group)
321027c1fe77f8 kernel/events/core.c Peter Zijlstra 2017-01-11 12039 perf_event_ctx_unlock(group_leader, gctx);
f55fc2a57cc9ca kernel/events/core.c Peter Zijlstra 2015-09-09 12040 mutex_unlock(&ctx->mutex);
f55fc2a57cc9ca kernel/events/core.c Peter Zijlstra 2015-09-09 12041 /* err_file: */
f55fc2a57cc9ca kernel/events/core.c Peter Zijlstra 2015-09-09 12042 fput(event_file);
c3f00c70276d8a kernel/perf_event.c Peter Zijlstra 2010-08-18 12043 err_context:
fe4b04fa31a6dc kernel/perf_event.c Peter Zijlstra 2011-02-02 12044 perf_unpin_context(ctx);
ea635c64e00706 kernel/perf_event.c Al Viro 2010-05-26 12045 put_ctx(ctx);
c6be5a5cb62592 kernel/perf_event.c Peter Zijlstra 2010-10-14 12046 err_alloc:
130056275ade73 kernel/events/core.c Peter Zijlstra 2016-02-24 12047 /*
130056275ade73 kernel/events/core.c Peter Zijlstra 2016-02-24 12048 * If event_file is set, the fput() above will have called ->release()
130056275ade73 kernel/events/core.c Peter Zijlstra 2016-02-24 12049 * and that will take care of freeing the event.
130056275ade73 kernel/events/core.c Peter Zijlstra 2016-02-24 12050 */
130056275ade73 kernel/events/core.c Peter Zijlstra 2016-02-24 12051 if (!event_file)
048c852051d2bd kernel/perf_event.c Tejun Heo 2010-05-01 12052 free_event(event);
79c9ce57eb2d5f kernel/events/core.c Peter Zijlstra 2016-04-26 12053 err_cred:
79c9ce57eb2d5f kernel/events/core.c Peter Zijlstra 2016-04-26 12054 if (task)
6914303824bb57 kernel/events/core.c Bernd Edlinger 2020-03-20 12055 mutex_unlock(&task->signal->exec_update_mutex);
1f4ee5038f0c1e kernel/events/core.c Peter Zijlstra 2014-05-06 12056 err_task:
e7d0bc047548d7 kernel/perf_event.c Peter Zijlstra 2010-10-14 12057 if (task)
e7d0bc047548d7 kernel/perf_event.c Peter Zijlstra 2010-10-14 12058 put_task_struct(task);
89a1e18731959e kernel/perf_event.c Peter Zijlstra 2010-09-07 12059 err_group_fd:
2903ff019b346a kernel/events/core.c Al Viro 2012-08-28 12060 fdput(group);
ea635c64e00706 kernel/perf_event.c Al Viro 2010-05-26 12061 err_fd:
ea635c64e00706 kernel/perf_event.c Al Viro 2010-05-26 12062 put_unused_fd(event_fd);
dc86cabe4b2424 kernel/perf_counter.c Ingo Molnar 2009-09-03 12063 return err;
0793a61d4df8da kernel/perf_counter.c Thomas Gleixner 2008-12-04 12064 }
0793a61d4df8da kernel/perf_counter.c Thomas Gleixner 2008-12-04 12065
:::::: The code at line 11620 was first introduced by commit
:::::: 0793a61d4df8daeac6492dbf8d2f3e5713caae5e performance counters: core code
:::::: TO: Thomas Gleixner <tglx@linutronix.de>
:::::: CC: Ingo Molnar <mingo@elte.hu>
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
reply other threads:[~2023-08-17 14:09 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=202308172107.L893kjMS-lkp@intel.com \
--to=lkp@intel.com \
--cc=golan.ben.ami@intel.com \
--cc=gregory.greenman@intel.com \
--cc=johannes.berg@intel.com \
--cc=michael.golant@intel.com \
--cc=oe-kbuild-all@lists.linux.dev \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.