On Mon, Jan 25, 2016 at 08:59:49PM -0800, Alexei Starovoitov wrote: > I think I understand what you're trying to do and > the patch looks good to me.
Great, thanks! > As far as BPF side I did the following... > does it match the model you outlined above? Yes, a few comments/questions below. > > Subject: [PATCH ] perf,bpf: convert perf_event_array to use struct file > > Signed-off-by: Alexei Starovoitov <a...@kernel.org> Can I take this through the tip/perf tree so that all these changes land together? > diff --git a/kernel/events/core.c b/kernel/events/core.c > index 06ae52e99ac2..2a95e0d2370f 100644 > --- a/kernel/events/core.c > +++ b/kernel/events/core.c > @@ -8896,21 +8896,17 @@ void perf_event_delayed_put(struct task_struct *task) > WARN_ON_ONCE(task->perf_event_ctxp[ctxn]); > } > > +struct file *perf_event_get(unsigned int fd) > { > + struct file *file; > > + file = fget_raw(fd); fget_raw() to guarantee the return value isn't NULL? afaict the O_PATH stuff does not apply to perf events, so you'd put any fd for which the distinction matters anyway. > + if (file->f_op != &perf_fops) { > + fput(file); > + return ERR_PTR(-EBADF); > + } > > + return file; > }