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? -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/