lists.openwall.net   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  linux-cve-announce  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]
Message-ID: <20230906222847.GA230622@dev-arch.thelio-3990X>
Date:   Wed, 6 Sep 2023 15:28:47 -0700
From:   Nathan Chancellor <nathan@...nel.org>
To:     Kent Overstreet <kent.overstreet@...ux.dev>
Cc:     torvalds@...ux-foundation.org, linux-kernel@...r.kernel.org,
        linux-fsdevel@...r.kernel.org, linux-bcachefs@...r.kernel.org,
        Kees Cook <keescook@...omium.org>
Subject: Re: [GIT PULL] bcachefs

Hi Kent,

On Sat, Sep 02, 2023 at 11:25:55PM -0400, Kent Overstreet wrote:
> here's the bcachefs pull request, for 6.6. Hopefully everything
> outstanding from the previous PR thread has been resolved; the block
> layer prereqs are in now via Jens's tree and the dcache helper has a
> reviewed-by from Christain.

I pulled this into mainline locally and did an LLVM build, which found
an immediate issue. It appears the bcachefs codes uses zero length
arrays for flexible arrays instead of the C99 syntax that the kernel is
moving to, which will cause issues with -fstrict-flex-arrays=3 (clang
16+, gcc 13+), see commit df8fc4e934c1 ("kbuild: Enable
-fstrict-flex-arrays=3"). Currently, building x86_64 defconfig + the
bcachefs configs with clang warns (or errors with CONFIG_WERROR):

  In file included from fs/bcachefs/replicas.c:6:
  fs/bcachefs/replicas.h:46:2: error: array index 0 is past the end of the array (that has type '__u8[0]' (aka 'unsigned char[0]')) [-Werror,-Warray-bounds]
     46 |         e->devs[0]      = dev;
        |         ^       ~
  fs/bcachefs/bcachefs_format.h:1392:2: note: array 'devs' declared here
   1392 |         __u8                    devs[0];
        |         ^
  1 error generated.

GCC would warn in the same manner if -Warray-bounds was not disabled for
it... :(

  In file included from fs/bcachefs/buckets.c:22:
  In function 'bch2_replicas_entry_cached',
      inlined from 'update_cached_sectors' at fs/bcachefs/buckets.c:409:2,
      inlined from 'bch2_mark_alloc' at fs/bcachefs/buckets.c:590:9:
  fs/bcachefs/replicas.h:46:16: error: array subscript 0 is outside array bounds of '__u8[0]' {aka 'unsigned char[]'} [-Werror=array-bounds=]
     46 |         e->devs[0]      = dev;
        |         ~~~~~~~^~~
  In file included from fs/bcachefs/bcachefs.h:206,
                   from fs/bcachefs/buckets.c:8:
  fs/bcachefs/bcachefs_format.h: In function 'bch2_mark_alloc':
  fs/bcachefs/bcachefs_format.h:1392:33: note: while referencing 'devs'
   1392 |         __u8                    devs[0];
        |                                 ^~~~

GCC shows many other instances of this problem for the same reason (I
can send a build log if you'd like), such as 'struct snapshot_table' in
subvolume_types.h and several other structures in bcachefs_format.h.

Cheers,
Nathan

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ