]> git.baikalelectronics.ru Git - kernel.git/commitdiff
Revert "kernel: make /proc/kallsyms mode 400 to reduce ease of attacking"
authorLinus Torvalds <torvalds@linux-foundation.org>
Fri, 19 Nov 2010 19:54:40 +0000 (11:54 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Fri, 19 Nov 2010 19:54:40 +0000 (11:54 -0800)
This reverts commit a5400a295440e8af59d06f0306346ed752199e64.

It turns out that this can break certain existing user land setups.
Quoth Sarah Sharp:

 "On Wednesday, I updated my branch to commit 4af9a7c from linus' tree,
  and my box would not boot.  klogd segfaulted, which stalled the whole
  system.

  At first I thought it actually hung the box, but it continued booting
  after 5 minutes, and I was able to log in.  It dropped back to the
  text console instead of the graphical bootup display for that period
  of time.  dmesg surprisingly still works.  I've bisected the problem
  down to this commit (commit a5400a295440e8af59d06f0306346ed752199e64)

  The box is running klogd 1.5.5ubuntu3 (from Jaunty).  Yes, I know
  that's old.  I read the bit in the commit about changing the
  permissions of kallsyms after boot, but if I can't boot that doesn't
  help."

So let's just keep the old default, and encourage distributions to do
the "chmod -r /proc/kallsyms" in their bootup scripts.  This is not
worth a kernel option to change default behavior, since it's so easily
done in user space.

Reported-and-bisected-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
Cc: Marcus Meissner <meissner@suse.de>
Cc: Tejun Heo <tj@kernel.org>
Cc: Eugene Teo <eugeneteo@kernel.org>
Cc: Jesper Juhl <jj@chaosbits.net>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
kernel/kallsyms.c

index a8db2570f99a9cb094daa2e773fc74e6e23d25bb..6f6d091b57573bf37fc98fdcb2df91c08787543d 100644 (file)
@@ -546,7 +546,7 @@ static const struct file_operations kallsyms_operations = {
 
 static int __init kallsyms_init(void)
 {
-       proc_create("kallsyms", 0400, NULL, &kallsyms_operations);
+       proc_create("kallsyms", 0444, NULL, &kallsyms_operations);
        return 0;
 }
 device_initcall(kallsyms_init);