From 03b0d67bfe74db60149083b1385b968b4333c384 Mon Sep 17 00:00:00 2001 From: Salman Qazi Date: Thu, 14 Jun 2012 15:31:09 -0700 Subject: [PATCH] --- yaml --- r: 311196 b: refs/heads/master c: 9c5da09d266ca9b32eb16cf940f8161d949c2fe5 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/kernel/events/core.c | 10 +++++++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index e07a210692be..11121c4e5c9f 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 8ed9eac4769407a8f0b93e381a3bc3ae81fa014b +refs/heads/master: 9c5da09d266ca9b32eb16cf940f8161d949c2fe5 diff --git a/trunk/kernel/events/core.c b/trunk/kernel/events/core.c index f85c0154b333..d7d71d6ec972 100644 --- a/trunk/kernel/events/core.c +++ b/trunk/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