summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Morton <akpm@osdl.org>2003-08-18 18:33:10 -0700
committerLinus Torvalds <torvalds@home.osdl.org>2003-08-18 18:33:10 -0700
commitd8055027615aaa13ae763adabbac2199e1d822e7 (patch)
tree73a7bafbc69077d5e19c92255dabf435870b767a
parente89061de1611bc5f3bb69983c94106dcc48bb40b (diff)
[PATCH] enable the ikconfig stuff in config
From: Sean Estabrooks <seanlkml@rogers.com> - fix space at end of line in config files; - add error check on put_user(); (Daniele Bellucci <bellucda@tiscali.it>) - add missing Kconfig piece for ikconfig;
-rw-r--r--init/Kconfig25
-rw-r--r--kernel/configs.c3
-rw-r--r--scripts/mkconfigs4
3 files changed, 29 insertions, 3 deletions
diff --git a/init/Kconfig b/init/Kconfig
index 5c012aeb2a8f..b01e44f573eb 100644
--- a/init/Kconfig
+++ b/init/Kconfig
@@ -120,6 +120,31 @@ config LOG_BUF_SHIFT
13 => 8 KB
12 => 4 KB
+config IKCONFIG
+ bool "Kernel .config support"
+ ---help---
+ This option enables the complete Linux kernel ".config" file
+ contents, information on compiler used to build the kernel,
+ kernel running when this kernel was built and kernel version
+ from Makefile to be saved in kernel. It provides documentation
+ of which kernel options are used in a running kernel or in an
+ on-disk kernel. This information can be extracted from the kernel
+ image file with the script scripts/extract-ikconfig and used as
+ input to rebuild the current kernel or to build another kernel.
+ It can also be extracted from a running kernel by reading
+ /proc/ikconfig/config and /proc/ikconfig/built_with, if enabled.
+ /proc/ikconfig/config will list the configuration that was used
+ to build the kernel and /proc/ikconfig/built_with will list
+ information on the compiler and host machine that was used to
+ build the kernel.
+
+config IKCONFIG_PROC
+ bool "Enable access to .config through /proc/ikconfig"
+ depends on IKCONFIG
+ ---help---
+ This option enables access to kernel configuration file and build
+ information through /proc/ikconfig.
+
menuconfig EMBEDDED
bool "Remove kernel features (for embedded systems)"
diff --git a/kernel/configs.c b/kernel/configs.c
index 470986f8ea1b..dd7acd64b214 100644
--- a/kernel/configs.c
+++ b/kernel/configs.c
@@ -64,7 +64,8 @@ ikconfig_output_current(struct file *file, char *buf,
limit = (ikconfig_current_size > len) ? len : ikconfig_current_size;
for (i = file->f_pos, cnt = 0;
i < ikconfig_current_size && cnt < limit; i++, cnt++) {
- put_user(ikconfig_config[i], buf + cnt);
+ if (put_user(ikconfig_config[i], buf + cnt))
+ return -EFAULT;
}
file->f_pos = i;
return cnt;
diff --git a/scripts/mkconfigs b/scripts/mkconfigs
index 1a926178a744..7d5a6c214f1e 100644
--- a/scripts/mkconfigs
+++ b/scripts/mkconfigs
@@ -76,6 +76,6 @@ echo "#else"
echo "static char *ikconfig_config __initdata __attribute__((unused)) = "
echo "#endif"
echo "\"CONFIG_BEGIN=n\\n\\"
-echo "`cat $config | sed 's/\"/\\\\\"/g' | grep "^#\? \?CONFIG_" | awk '{ print $0, "\\\\n\\\\" }' `"
-echo "CONFIG_END=n\";"
+echo "`cat $config | sed 's/\"/\\\\\"/g' | grep "^#\? \?CONFIG_" | awk '{ print $0 "\\\\n\\\\" }' `"
+echo "CONFIG_END=n\\n\";"
echo "#endif /* _IKCONFIG_H */"