Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753040AbbGQLXo (ORCPT ); Fri, 17 Jul 2015 07:23:44 -0400 Received: from szxga02-in.huawei.com ([119.145.14.65]:43775 "EHLO szxga02-in.huawei.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751498AbbGQLXn (ORCPT ); Fri, 17 Jul 2015 07:23:43 -0400 Message-ID: <55A8E554.9040205@huawei.com> Date: Fri, 17 Jul 2015 19:21:56 +0800 From: "Wangnan (F)" User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:31.0) Gecko/20100101 Thunderbird/31.6.0 MIME-Version: 1.0 To: Peter Zijlstra , kaixu xia CC: , , , , , , , , Subject: Re: [RFC PATCH 3/6] bpf: Save the pointer to struct perf_event to map References: <1437129816-13176-1-git-send-email-xiakaixu@huawei.com> <1437129816-13176-4-git-send-email-xiakaixu@huawei.com> <20150717110623.GK12596@twins.programming.kicks-ass.net> In-Reply-To: <20150717110623.GK12596@twins.programming.kicks-ass.net> Content-Type: text/plain; charset="utf-8"; format=flowed Content-Transfer-Encoding: 7bit X-Originating-IP: [10.111.66.109] X-CFilter-Loop: Reflected Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1347 Lines: 50 On 2015/7/17 19:06, Peter Zijlstra wrote: > On Fri, Jul 17, 2015 at 06:43:33PM +0800, kaixu xia wrote: >> diff --git a/kernel/events/core.c b/kernel/events/core.c >> index e965cfa..c4e34b7 100644 >> --- a/kernel/events/core.c >> +++ b/kernel/events/core.c >> @@ -8582,6 +8582,28 @@ void perf_event_delayed_put(struct task_struct *task) >> WARN_ON_ONCE(task->perf_event_ctxp[ctxn]); >> } >> >> +struct perf_event *perf_event_get(unsigned int fd) >> +{ >> + struct perf_event *event; >> + struct fd f; >> + >> + f = fdget(fd); >> + >> + if (!f.file) >> + return ERR_PTR(-EBADF); >> + >> + if (f.file->f_op != &perf_fops) { >> + fdput(f); >> + return ERR_PTR(-EINVAL); >> + } >> + >> + event = f.file->private_data; >> + >> + fdput(f); >> + >> + return event; >> +} > And what is stopping userspace from closing those FDs while you're using > them? Please check replace_map_with_perf_event(). Users can close the FDs, but the perf event structure will still valid because we increase its reference count. It won't be close until the map is released. We have test that case. Thank you. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/