• Gustavo A. R. Silva's avatar
    bcachefs: Replace zero-length array with flex-array member and use __counted_by · 4c26dea1
    Gustavo A. R. Silva authored
    Fake flexible arrays (zero-length and one-element arrays) are
    deprecated, and should be replaced by flexible-array members.
    So, replace zero-length array with a flexible-array member in
    `struct bch_ioctl_fsck_offline`.
    
    Also annotate array `devs` with `__counted_by()` to prepare for the
    coming implementation by GCC and Clang of the `__counted_by` attribute.
    Flexible array members annotated with `__counted_by` can have their
    accesses bounds-checked at run-time via `CONFIG_UBSAN_BOUNDS` (for
    array indexing) and `CONFIG_FORTIFY_SOURCE` (for strcpy/memcpy-family
    functions).
    
    This fixes the following -Warray-bounds warnings:
    fs/bcachefs/chardev.c: In function 'bch2_ioctl_fsck_offline':
    fs/bcachefs/chardev.c:363:34: warning: array subscript 0 is outside array bounds of '__u64[0]' {aka 'long long unsigned int[]'} [-Warray-bounds=]
      363 |         if (copy_from_user(devs, &user_arg->devs[0], sizeof(user_arg->devs[0]) * arg.nr_devs)) {...
    4c26dea1
bcachefs_ioctl.h 10.5 KB