SoylentNews
SoylentNews is people
https://soylentnews.org/

Title    The Linux Kernel Is Now VLA-Free: A Win For Security, Less Overhead & Better For Clang
Date    Monday October 29 2018, @11:05AM
Author    chromas
Topic   
from the constants-aren't-variables-won't dept.
https://soylentnews.org/article.pl?sid=18/10/29/1036253

martyb writes:

https://www.phoronix.com/scan.php?page=news_item&px=Linux-Kills-The-VLA:

VLAs [(Varable Length Arrays)] 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:

- 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.

- 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.

- Arguably most importantly is there can be security implications from VLAs around the kernel's stack usage.

[...] Kees Cook[*] sent out the pull request today for VLA removal that now enables the "-Wvla" compiler flag to emit a warning should any variable-length array be found within the kernel's C code. That will help prevent new code from inadvertently using VLAs and also spot any lingering kernel code still relying upon this behavior.

Kees Cook wrote that there still might be a few places where VLAs could be found, "there may be a couple more VLAs hiding in hard-to-find randconfigs, but nothing big has shaken out in the last month or so in linux-next. We should be basically VLA-free now! Wheee. :)"

[*] KeesCook.

Have you ever used VLAs? Removed them? Why?


Original Submission

Links

  1. "martyb" - https://soylentnews.org/~martyb/
  2. "VLA removal" - http://lkml.iu.edu/hypermail/linux/kernel/1810.3/02834.html
  3. "KeesCook" - https://wiki.ubuntu.com/KeesCook
  4. "Original Submission" - https://soylentnews.org/submit.pl?op=viewsub&subid=29806

© Copyright 2023 - SoylentNews, All Rights Reserved

printed from SoylentNews, The Linux Kernel Is Now VLA-Free: A Win For Security, Less Overhead & Better For Clang on 2023-07-10 17:52:51