aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/sys.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2011-10-17 08:24:24 -0700
committerGreg Kroah-Hartman <gregkh@suse.de>2011-10-25 07:10:14 +0200
commit60635529f6aec7572ae7009aabd80558cf2f43b4 (patch)
treed1e0354991824e03a169dd784158cd1894c2d417 /kernel/sys.c
parent05ffb6746c59a967115714ea1e5b8412291874ea (diff)
downloadkernel_samsung_smdk4412-60635529f6aec7572ae7009aabd80558cf2f43b4.zip
kernel_samsung_smdk4412-60635529f6aec7572ae7009aabd80558cf2f43b4.tar.gz
kernel_samsung_smdk4412-60635529f6aec7572ae7009aabd80558cf2f43b4.tar.bz2
Avoid using variable-length arrays in kernel/sys.c
commit a84a79e4d369a73c0130b5858199e949432da4c6 upstream. The size is always valid, but variable-length arrays generate worse code for no good reason (unless the function happens to be inlined and the compiler sees the length for the simple constant it is). Also, there seems to be some code generation problem on POWER, where Henrik Bakken reports that register r28 can get corrupted under some subtle circumstances (interrupt happening at the wrong time?). That all indicates some seriously broken compiler issues, but since variable length arrays are bad regardless, there's little point in trying to chase it down. "Just don't do that, then". Reported-by: Henrik Grindal Bakken <henribak@cisco.com> Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'kernel/sys.c')
-rw-r--r--kernel/sys.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/kernel/sys.c b/kernel/sys.c
index 5c942cf..f88dadc 100644
--- a/kernel/sys.c
+++ b/kernel/sys.c
@@ -1135,7 +1135,7 @@ DECLARE_RWSEM(uts_sem);
static int override_release(char __user *release, int len)
{
int ret = 0;
- char buf[len];
+ char buf[65];
if (current->personality & UNAME26) {
char *rest = UTS_RELEASE;