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: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Mon, 09 Jul 2012 09:18:13 -0600
From:	David Ahern <dsahern@...il.com>
To:	Peter Zijlstra <peterz@...radead.org>
CC:	Avi Kivity <avi@...hat.com>, Gleb Natapov <gleb@...hat.com>,
	LKML <linux-kernel@...r.kernel.org>
Subject: Re: perf with precise attribute kills all KVM based VMs

On 7/9/12 8:58 AM, David Ahern wrote:
> On 7/9/12 8:52 AM, David Ahern wrote:
>> On 7/9/12 8:49 AM, Peter Zijlstra wrote:
>>> On Mon, 2012-07-09 at 08:47 -0600, David Ahern wrote:
>>>>
>>>> I found this testing changes to perf-kvm, but found the problem extends
>>>> to just perf-record. With perf-record exclude_guest defaults to 1. See
>>>> tools/perf/util/util.c, event_attr_init().
>>>
>>> You lost me there.. so perf-record defaults to exclude_guest=1 (which
>>> would make the proposed patch I just send actually possible), but its
>>> still going *bang* ?
>>>
>>
>>
>> I can do the formality of testing your proposed patch, but yes I think
>> so. exclude_guest defaults to 1 because perf_guest defaults to false.
>
>
> Let me dig for a few minutes. exclude_user is getting reset somewhere.
> Setting a breakpoint on sys_perf_event_open and dumping the attribute:
>
> $1 = {type = 0, size = 80, config = 0, {sample_period = 4000,
> sample_freq = 4000}, sample_type = 263, read_format = 7,
>    disabled = 1, inherit = 1, pinned = 0, exclusive = 0, exclude_user =
> 0, exclude_kernel = 0, exclude_hv = 0, exclude_idle =
>      0, mmap = 1, comm = 1, freq = 1, inherit_stat = 0, enable_on_exec =
> 1, task = 0, watermark = 0, precise_ip = 1,
>    mmap_data = 0, sample_id_all = 1, exclude_host = 0, exclude_guest =
> 0, __reserved_1 = 0, {wakeup_events = 0,
>      wakeup_watermark = 0}, bp_type = 0, {bp_addr = 0, config1 = 0},
> {bp_len = 0, config2 = 0}, branch_sample_type = 0}
>
>

Offending function is parse_events_modifier(). It resets exclude_guest 
to 0. That's a separate thread/bug.

Undoing that (hardcoding exclude_guest to 1) and verifying in gdb that 
it is set for all cpus:

(gdb) p *attr
$17 = {type = 0, size = 80, config = 0, {sample_period = 4000, 
sample_freq = 4000}, sample_type = 423, read_format = 7,
   disabled = 1, inherit = 1, pinned = 0, exclusive = 0, exclude_user = 
0, exclude_kernel = 0, exclude_hv = 0, exclude_idle =
     0, mmap = 1, comm = 1, freq = 1, inherit_stat = 0, enable_on_exec = 
0, task = 0, watermark = 0, precise_ip = 1,
   mmap_data = 0, sample_id_all = 1, exclude_host = 0, exclude_guest = 
1, __reserved_1 = 0, {wakeup_events = 0,
     wakeup_watermark = 0}, bp_type = 0, {bp_addr = 0, config1 = 0}, 
{bp_len = 0, config2 = 0}, branch_sample_type = 0}

It still bombs and the VM dies.

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

Powered by blists - more mailing lists