Commit da1a679c authored by Roland McGrath's avatar Roland McGrath Committed by Linus Torvalds

Add /sys/kernel/notes

This patch adds the /sys/kernel/notes magic file.  Reading this delivers the
contents of the kernel's .notes section.  This lets userland easily glean any
detailed information about the running kernel's build that was stored there at
compile time.
Signed-off-by: default avatarRoland McGrath <roland@redhat.com>
Cc: Andi Kleen <ak@suse.de>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Richard Henderson <rth@twiddle.net>
Cc: Ivan Kokshaysky <ink@jurassic.park.msu.ru>
Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 86ead9ca
...@@ -62,6 +62,28 @@ static ssize_t kexec_crash_loaded_show(struct kset *kset, char *page) ...@@ -62,6 +62,28 @@ static ssize_t kexec_crash_loaded_show(struct kset *kset, char *page)
KERNEL_ATTR_RO(kexec_crash_loaded); KERNEL_ATTR_RO(kexec_crash_loaded);
#endif /* CONFIG_KEXEC */ #endif /* CONFIG_KEXEC */
/*
* Make /sys/kernel/notes give the raw contents of our kernel .notes section.
*/
extern const char __start_notes __attribute__((weak));
extern const char __stop_notes __attribute__((weak));
#define notes_size (&__stop_notes - &__start_notes)
static ssize_t notes_read(struct kobject *kobj, struct bin_attribute *bin_attr,
char *buf, loff_t off, size_t count)
{
memcpy(buf, &__start_notes + off, count);
return count;
}
static struct bin_attribute notes_attr = {
.attr = {
.name = "notes",
.mode = S_IRUGO,
},
.read = &notes_read,
};
decl_subsys(kernel, NULL, NULL); decl_subsys(kernel, NULL, NULL);
EXPORT_SYMBOL_GPL(kernel_subsys); EXPORT_SYMBOL_GPL(kernel_subsys);
...@@ -88,6 +110,12 @@ static int __init ksysfs_init(void) ...@@ -88,6 +110,12 @@ static int __init ksysfs_init(void)
error = sysfs_create_group(&kernel_subsys.kobj, error = sysfs_create_group(&kernel_subsys.kobj,
&kernel_attr_group); &kernel_attr_group);
if (!error && notes_size > 0) {
notes_attr.size = notes_size;
error = sysfs_create_bin_file(&kernel_subsys.kobj,
&notes_attr);
}
return error; return error;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment