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]
Message-ID: <20130823193934.GB15521@pd.tnic>
Date:	Fri, 23 Aug 2013 21:39:34 +0200
From:	Borislav Petkov <bp@...en8.de>
To:	Vince Weaver <vince@...ter.net>
Cc:	Robert Richter <rric@...nel.org>,
	Peter Zijlstra <peterz@...radead.org>,
	Ingo Molnar <mingo@...nel.org>,
	Arnaldo Carvalho de Melo <acme@...radead.org>,
	Jiri Olsa <jolsa@...hat.com>, linux-kernel@...r.kernel.org,
	Vince Weaver <vincent.weaver@...ne.edu>
Subject: Re: [PATCH v3 12/12] [RFC] perf, persistent: ioctl functions to
 control persistency

On Fri, Aug 23, 2013 at 01:07:54PM -0400, Vince Weaver wrote:
> If I had not read the man-page fragment and saw a
>    result=ioctl(fd,PERF_EVENT_IOC_ATTACH,0);
> I'd have no clue what it was doing (attach?  attach to what?)
> wheras if I saw
>    result=ioctl(fd,PERF_EVENT_IOC_UNPERSIST,0);
> it's a little more clearer and also indicates that the ioctl is only
> valid if you're dealing with a persistent event.

Maybe this makes it more understandable for you but this is beside the
point.

The main and the most important idea here is that we want to
attach/detach file descriptors to perf events and the resources
(buffers, etc) associated with them so that those events can be made
independent from processes.

But I have to say the reversed thing above does sound confusing, now
that I'm looking at the code. Actually, at the time we discussed this,
my idea was to do it like this:

1. we open a perf event and get its file descriptor
2. ioctl ATTACH to it so that it is attached to the process.

... do some tracing and collecting and fiddling...

3. ioctl DETACH from it so that it is "forked in the background" so to
speak, very similar to a background job in the shell.

4. The rest of the code continues and deallocates the event *BUT* (and
this is the key thing!) the counter/tracepoint remains operational in
the kernel, running all the time.

5. Now, after a certain point, you come back and ioctl ATTACH to this
already opened event and read/collect its buffers again.

And here's the deal - if you don't DETACH from the event at step 3, it
gets destroyed on process exit, i.e. what the current perf behavior is.

Robert, I think the above is more straight-forward and intuitive, no?

Thanks.

-- 
Regards/Gruss,
    Boris.

Sent from a fat crate under my desk. Formatting is fine.
--
--
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

Powered by Openwall GNU/*/Linux Powered by OpenVZ