lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  PHC 
Open Source and information security mailing list archives
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:   Tue, 28 Jun 2022 11:05:53 -0700
From:   Kees Cook <>
To:     Geert Uytterhoeven <>
Cc:     "Gustavo A. R. Silva" <>,
        Linux Kernel Mailing List <>,
        the arch/x86 maintainers <>,, linux-m68k <>,
        "open list:BROADCOM NVRAM DRIVER" <>,
        linux-s390 <>,
        KVM list <>,
        Intel Graphics Development <>,
        DRI Development <>,
        netdev <>, bpf <>,
        linux-btrfs <>,,
        Linux FS Devel <>,,,,
        MTD Maling List <>,
        kasan-dev <>,
        Linux MMC List <>,,
        NetFilter <>,,,,,,
        Linux ARM <>,
        scsi <>,
        target-devel <>,
        USB list <>,,
        V9FS Developers <>,
        linux-rdma <>,
        ALSA Development Mailing List <>,
Subject: Re: [PATCH][next] treewide: uapi: Replace zero-length arrays with
 flexible-array members

On Tue, Jun 28, 2022 at 09:27:21AM +0200, Geert Uytterhoeven wrote:
> Hi Gustavo,
> Thanks for your patch!
> On Mon, Jun 27, 2022 at 8:04 PM Gustavo A. R. Silva
> <> wrote:
> > There is a regular need in the kernel to provide a way to declare
> > having a dynamically sized set of trailing elements in a structure.
> > Kernel code should always use “flexible array members”[1] for these
> > cases. The older style of one-element or zero-length arrays should
> > no longer be used[2].
> These rules apply to the kernel, but uapi is not considered part of the
> kernel, so different rules apply.  Uapi header files should work with
> whatever compiler that can be used for compiling userspace.

Right, userspace isn't bound by these rules, but the kernel ends up
consuming these structures, so we need to fix them. The [0] -> []
changes (when they are not erroneously being used within other
structures) is valid for all compilers. Flexible arrays are C99; it's
been 23 years. :)

But, yes, where we DO break stuff we need to workaround it, etc.

Kees Cook

Powered by blists - more mailing lists