OSDN Git Service

Avoid using variable-length arrays in kernel/sys.c
authorLinus Torvalds <torvalds@linux-foundation.org>
Mon, 17 Oct 2011 15:24:24 +0000 (08:24 -0700)
committerGreg Kroah-Hartman <gregkh@suse.de>
Tue, 25 Oct 2011 05:10:14 +0000 (07:10 +0200)
commit60635529f6aec7572ae7009aabd80558cf2f43b4
treed1e0354991824e03a169dd784158cd1894c2d417
parent05ffb6746c59a967115714ea1e5b8412291874ea
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>
kernel/sys.c