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
| ||
|
Date: Fri, 12 Jan 2007 16:09:59 +1100 From: Nick Piggin <nickpiggin@...oo.com.au> To: Mathieu Desnoyers <mathieu.desnoyers@...ymtl.ca> CC: linux-kernel@...r.kernel.org, Linus Torvalds <torvalds@...l.org>, Andrew Morton <akpm@...l.org>, Ingo Molnar <mingo@...hat.com>, Greg Kroah-Hartman <gregkh@...e.de>, Christoph Hellwig <hch@...radead.org>, ltt-dev@...fik.org, systemtap@...rces.redhat.com, Douglas Niehaus <niehaus@...s.ku.edu>, Thomas Gleixner <tglx@...utronix.de> Subject: Re: [PATCH 05/05] Linux Kernel Markers, non optimised architectures Mathieu Desnoyers wrote: > * Nick Piggin (nickpiggin@...oo.com.au) wrote: > >>Mathieu Desnoyers wrote: >> >> >>>+#define MARK(name, format, args...) \ >>>+ do { \ >>>+ static marker_probe_func *__mark_call_##name = \ >>>+ __mark_empty_function; \ >>>+ volatile static char __marker_enable_##name = 0; \ >>>+ static const struct __mark_marker_c __mark_c_##name \ >>>+ __attribute__((section(".markers.c"))) = \ >>>+ { #name, &__mark_call_##name, format } ; \ >>>+ static const struct __mark_marker __mark_##name \ >>>+ __attribute__((section(".markers"))) = \ >>>+ { &__mark_c_##name, &__marker_enable_##name } ; \ >>>+ asm volatile ( "" : : "i" (&__mark_##name)); \ >>>+ __mark_check_format(format, ## args); \ >>>+ if (unlikely(__marker_enable_##name)) { \ >>>+ preempt_disable(); \ >>>+ (*__mark_call_##name)(format, ## args); \ >>>+ preempt_enable_no_resched(); \ >> >>Why not just preempt_enable() here? >> > > > Because the preempt_enable() macro contains preempt_check_resched(), which > may call preempt_schedule() which leads us to a call to schedule(). Therefore, > all those very interesting scheduler functions would cause an infinite > recursive scheduler call if we marked schedule() and used preempt_enable() in > the marker. The vast majority of schedule() has preempt turned off, so that shouldn't be a problem, if you provide a comment. > The primary goal for the markers (and the probes that attaches to them) is to > have the fewest side-effects possible : any kernel method called from an > instrumentation site adds this precise kernel method to the "cannot be > instrumented" list, which I want to keep as small possible. OK, well one problem is that it can cause a resched event to be lost, so you might say it has more side-effects without checking resched. -- SUSE Labs, Novell Inc. Send instant messages to your online friends http://au.messenger.yahoo.com - 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