lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite for Android: free password hash cracker in your pocket
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Mon, 11 Jan 2016 12:30:42 +0200
From:	Alexander Shishkin <alexander.shishkin@...ux.intel.com>
To:	Peter Zijlstra <peterz@...radead.org>,
	Vince Weaver <vincent.weaver@...ne.edu>
Cc:	linux-kernel@...r.kernel.org, Ingo Molnar <mingo@...hat.com>,
	Arnaldo Carvalho de Melo <acme@...nel.org>,
	Stephane Eranian <eranian@...il.com>
Subject: Re: perf_event_open() ABI compatability

Peter Zijlstra <peterz@...radead.org> writes:

> On Mon, Jan 04, 2016 at 05:19:13PM -0500, Vince Weaver wrote:
>> 
>> So I think this might be revisiting an issue that has come up before, but
>> we're having backward compatability issues with PAPI and libpfm4 and
>> the perf_event_open() system call.
>> 
>> If a user specifies exclude_guest=1 on an older kernel that doesn't 
>> support it, we get the awesome EINVAL error return code and it often
>> takes hours to track down the cause.
>> 
>> Now in theory the ABI is maintained via the "size" field.  So you can
>> figure out the size of the attr struct by setting an invalid size
>> and then getting E2BIG with size set to the value the kernel expects.
>> 		
>> This doesn't help with exclude_guest though, as that's in the giant union
>> in the middle of the attr, and there's absolutely no mechanism at all
>> to tell when that has been extended.
>> 
>> Is there any solution to all of this, except having to carry around a big 
>> table of kernel version numbers for when features were added?
>
> The perf tool does a probe thing where it will, in reverse order of
> feature addition remove flags.
>
> The advantage of the dynamic probing is that it will work with franken
> kernels that have bits backported; where relying on the kernel version
> number is pointless.
>
> But yes, this is all somewhat fugly.
>
>> Ideally we would somehow want E2BIG returned plus the size of __reserved_1 
>> if the value of __reserved_1 is not zero.  I suppose at this point in the 
>> game it's too late for this to be much help and we're going to have to
>> work around the problem forever anyway.
>
> Right :/ So I was hoping some of that extended error reporting stuff
> from Alexander Shishkin would help out with this. Not sure where that
> stranded -- I think in the attempt to make it too generic or so.

Yep. I can respin it back into perf-specific shape, so do we still want
it?

Regards,
--
Alex

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ