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: Sat, 20 Mar 2010 07:12:17 +0100 From: Frederic Weisbecker <fweisbec@...il.com> To: Jason Baron <jbaron@...hat.com> Cc: mingo@...e.hu, rostedt@...dmis.org, linux-kernel@...r.kernel.org, laijs@...fujitsu.com, lizf@...fujitsu.com, hpa@...or.com, tglx@...utronix.de, mhiramat@...hat.com, heiko.carstens@...ibm.com, benh@...nel.crashing.org, davem@...emloft.net, lethal@...ux-sh.org, schwidefsky@...ibm.com, brueckner@...ux.vnet.ibm.com, tony.luck@...el.com Subject: Re: [PATCH 06/14] tracing: add tracing support for compat syscalls On Tue, Mar 16, 2010 at 01:46:36PM -0400, Jason Baron wrote: > #else /* CONFIG_COMPAT */ > > +#define NR_syscalls_compat 0 > + > static inline int is_compat_task(void) > { > return 0; > diff --git a/include/trace/syscall.h b/include/trace/syscall.h > index 8f5ac38..1cc1d1e 100644 > --- a/include/trace/syscall.h > +++ b/include/trace/syscall.h > @@ -22,6 +22,7 @@ > struct syscall_metadata { > const char *name; > int syscall_nr; > + int compat_syscall_nr; Why do you need both syscall_nr and compat_syscall_nr? Compat and usual syscalls never share the same syscall metadata. > +#ifdef __HAVE_ARCH_FTRACE_COMPAT_SYSCALLS > + if (NR_syscalls_compat) { > + int match; > + struct ftrace_event_call *ftrace_event; > + > + compat_syscalls_metadata = kzalloc(sizeof(*syscalls_metadata) * > + NR_syscalls_compat, GFP_KERNEL); > + if (!compat_syscalls_metadata) { > + WARN_ON(1); > + kfree(syscalls_metadata); > + return -ENOMEM; > + } > + for (i = 0; i < NR_syscalls_compat; i++) { > + addr = arch_compat_syscall_addr(i); > + meta = find_syscall_meta(addr); > + if (!meta) > + continue; > + > + meta->compat_syscall_nr = i; > + compat_syscalls_metadata[i] = meta; > + } > + /* now check if any compat_syscalls are not referenced */ > + for (ftrace_event = __start_ftrace_events; > + (unsigned long)ftrace_event < > + (unsigned long)__stop_ftrace_events; ftrace_event++) { You could reuse for_each_event() > + match = 0; > + if (!ftrace_event->name) > + continue; > + if (strcmp(ftrace_event->system, "compat_syscalls")) > + continue; > + for (i = 0; i < NR_syscalls_compat; i++) { > + if (ftrace_event->data == > + compat_syscalls_metadata[i]) { > + match = 1; > + break; Nano-neat: starting the whole block with if (NR_syscalls_compat) or making the whole a separate init_ftrace_syscalls() would have made it win one level of indentation. > + } > + } > + if (!match) > + ftrace_event->name = NULL; Nice :) Thanks. -- 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