Re: [RFC PATCH 15/20] coresight: etm-perf: implementing 'setup_aux()' API

From: Alexander Shishkin
Date: Fri Oct 02 2015 - 00:50:33 EST


Mathieu Poirier <mathieu.poirier@xxxxxxxxxx> writes:

> On 30 September 2015 at 05:50, Alexander Shishkin
> <alexander.shishkin@xxxxxxxxxxxxxxx> wrote:
>> Mathieu Poirier <mathieu.poirier@xxxxxxxxxx> writes:
>>
>>> +static void *etm_setup_aux(int cpu, void **pages,
>>> + int nr_pages, bool overwrite)
>>> +{
>>> + struct coresight_device *csdev;
>>> +
>>> + if (cpu == -1)
>>> + cpu = smp_processor_id();
>>> +
>>> + csdev = per_cpu(csdev_sink, cpu);
>>> + if (!csdev)
>>> + return NULL;
>>> +
>>> + return sink_ops(csdev)->setup_aux(csdev, cpu, pages,
>>> + nr_pages, overwrite);
>>
>> Is it guaranteed that this sink would always have .setup_aux()?
>
> A setup_aux() is vital to the design, both on Intel and ARM. I really
> don't see how one could go without it. I can return NULL if it hasn't
> been provided - that way the setup will fail without triggering a core
> dump.

It wasn't clear to me that the sink that ends up in csdev_sink will
always be the one that does have .setup_aux(). And if it indeed doesn't,
it's better to refuse to setup a buffer than crash.

Regards,
--
Alex
--
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/