Re: [RFC][PATCH 06/11] perf, x86: PEBS infrastructure

From: Peter Zijlstra
Date: Wed Mar 03 2010 - 12:42:55 EST


On Wed, 2010-03-03 at 18:38 +0100, Robert Richter wrote:
> > + fake_cpuc = kmalloc(sizeof(*fake_cpuc), GFP_KERNEL | __GFP_ZERO);
> > + if (!fake_cpuc)
> > + return -ENOMEM;
> > +
> > + c = x86_pmu.get_event_constraints(fake_cpuc, event);
> > +
> > + if (!c || !c->weight)
> > + ret = -ENOSPC;
> > +
> > + if (x86_pmu.put_event_constraints)
> > + x86_pmu.put_event_constraints(fake_cpuc, event);
>
> A fake cpu with the struct filled with zeros will cause a null pointer
> exception in amd_get_event_constraints():
>
> struct amd_nb *nb = cpuc->amd_nb;

That should result in nb == NULL, right? which is checked slightly
further in the function.

> Shouldn't x86_schedule_events() sufficient to decide if a single
> counter is available? I did not yet look at group events, this might
> happen there too.

Sure, but we will only attempt scheduling them at enable time, this is a
creation time check, failing to create an unschedulable event seems
prudent.

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/