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: <20070209000353.f4c2057e.akpm@linux-foundation.org>
Date:	Fri, 9 Feb 2007 00:03:53 -0800
From:	Andrew Morton <akpm@...ux-foundation.org>
To:	Srinivasa Ds <srinivasa@...ibm.com>
Cc:	Frederik Deweerdt <deweerdt@...e.fr>,
	Christoph Hellwig <hch@...radead.org>,
	linux-kernel@...r.kernel.org, torvalds@...ux-foundation.org,
	jkenisto@...ibm.com, anil.s.keshavamurthy@...el.com,
	prasanna@...ibm.com, ananth@...ibm.com
Subject: Re: [RFC] [PATCH] To list all active probes in the system---Take-2

On Thu, 08 Feb 2007 17:16:15 +0530 Srinivasa Ds <srinivasa@...ibm.com> wrote:

> +module_init(debugfs_kprobe_init);
> +#endif /* CONFIG_DEBUG_FS */
> +
>  __initcall(init_kprobes);

I think you'll find this doesn't work when loaded as a module: we only
support a single initcall per module.  (Which might be a bit dumb of us -
it's probably easy to fix and is an inconsistency between modular and
built-in).

<looks>

Oh, kernel/kprobes.o can't be linked as a module.  It looks like it could
be though?

You have a little race: debugfs_kprobe_init() will be called before
init_kprobes().  If someone were able to read from the debugfs files in
that window (they probably can't as we don't support modular kprobes.ko)
they'll crash the kernel.  I'll switch debugfs_kprobe_init() to
late_initcall to fix that.

There are quite a few things in there which could have static scope.


I'll apply this:



diff -puN kernel/kprobes.c~kprobes-list-all-active-probes-in-the-system-tidy kernel/kprobes.c
--- a/kernel/kprobes.c~kprobes-list-all-active-probes-in-the-system-tidy
+++ a/kernel/kprobes.c
@@ -836,12 +836,12 @@ static void __kprobes report_probe(struc
 		seq_printf(pi, "%p  %s  %p\n", p->addr, kprobe_type, p->addr);
 }
 
-void __kprobes *kprobe_seq_start(struct seq_file *f, loff_t *pos)
+static void __kprobes *kprobe_seq_start(struct seq_file *f, loff_t *pos)
 {
 	return (*pos < KPROBE_TABLE_SIZE) ? pos : NULL;
 }
 
-void __kprobes *kprobe_seq_next(struct seq_file *f, void *v, loff_t *pos)
+static void __kprobes *kprobe_seq_next(struct seq_file *f, void *v, loff_t *pos)
 {
 	(*pos)++;
 	if (*pos >= KPROBE_TABLE_SIZE)
@@ -849,12 +849,12 @@ void __kprobes *kprobe_seq_next(struct s
 	return pos;
 }
 
-void __kprobes kprobe_seq_stop(struct seq_file *f, void *v)
+static void __kprobes kprobe_seq_stop(struct seq_file *f, void *v)
 {
 	/* Nothing to do */
 }
 
-int __kprobes show_kprobe_addr(struct seq_file *pi, void *v)
+static int __kprobes show_kprobe_addr(struct seq_file *pi, void *v)
 {
 	struct hlist_head *head;
 	struct hlist_node *node;
@@ -879,7 +879,7 @@ int __kprobes show_kprobe_addr(struct se
 	return 0;
 }
 
-struct seq_operations kprobes_seq_ops = {
+static struct seq_operations kprobes_seq_ops = {
 	.start = kprobe_seq_start,
 	.next  = kprobe_seq_next,
 	.stop  = kprobe_seq_stop,
@@ -916,10 +916,10 @@ static int __kprobes debugfs_kprobe_init
 	return 0;
 }
 
-module_init(debugfs_kprobe_init);
+late_initcall(debugfs_kprobe_init);
 #endif /* CONFIG_DEBUG_FS */
 
-__initcall(init_kprobes);
+module_init(init_kprobes);
 
 EXPORT_SYMBOL_GPL(register_kprobe);
 EXPORT_SYMBOL_GPL(unregister_kprobe);
@@ -928,4 +928,3 @@ EXPORT_SYMBOL_GPL(unregister_jprobe);
 EXPORT_SYMBOL_GPL(jprobe_return);
 EXPORT_SYMBOL_GPL(register_kretprobe);
 EXPORT_SYMBOL_GPL(unregister_kretprobe);
-
_

-
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