With the in-development Linux 4.20 kernel, it is now effectively VLA-free. From a report: The variable-length arrays (VLAs) that can be convenient and part of the C99 standard but can have unintended consequences. VLAs allow for array lengths to be determined at run-time rather than compile time. The Linux kernel has long relied upon VLAs in different parts of the kernel — including within structures — but going on for months now (and years if counting the kernel Clang’ing efforts) has been to remove the usage of variable-length arrays within the kernel. The problems with them are: 1. Using variable-length arrays can add some minor run-time overhead to the code due to needing to determine the size of the array at run-time. 2. VLAs within structures is not supported by the LLVM Clang compiler and thus an issue for those wanting to build the kernel outside of GCC, Clang only supports the C99-style VLAs. 3. Arguably most importantly is there can be security implications from VLAs around the kernel’s stack usage.

Share on Google+

of this story at Slashdot.

…read more

Source:: Slashdot