diff options
| author | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2012-06-25 09:11:02 -0700 |
|---|---|---|
| committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2012-06-25 09:12:22 -0700 |
| commit | 8f8741ca5e55a35dafa35f4eac2b70b08fae997e (patch) | |
| tree | 4f3d0d5f685a735d5d6265c1b3cafda71ff0683e /kernel/events/core.c | |
| parent | 0a6a2daf1c7a30c3ca66a8ddb8fc4ff7820051e2 (diff) | |
| parent | 6b16351acbd415e66ba16bf7d473ece1574cf0bc (diff) | |
Merge 3.5-rc4 into usb-linus
This is needed to sync up with the previous USB changes that were merged in
Linus's branch.
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'kernel/events/core.c')
| -rw-r--r-- | kernel/events/core.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/kernel/events/core.c b/kernel/events/core.c index f85c0154b33..d7d71d6ec97 100644 --- a/kernel/events/core.c +++ b/kernel/events/core.c @@ -253,9 +253,9 @@ perf_cgroup_match(struct perf_event *event) return !event->cgrp || event->cgrp == cpuctx->cgrp; } -static inline void perf_get_cgroup(struct perf_event *event) +static inline bool perf_tryget_cgroup(struct perf_event *event) { - css_get(&event->cgrp->css); + return css_tryget(&event->cgrp->css); } static inline void perf_put_cgroup(struct perf_event *event) @@ -484,7 +484,11 @@ static inline int perf_cgroup_connect(int fd, struct perf_event *event, event->cgrp = cgrp; /* must be done before we fput() the file */ - perf_get_cgroup(event); + if (!perf_tryget_cgroup(event)) { + event->cgrp = NULL; + ret = -ENOENT; + goto out; + } /* * all events in a group must monitor |
