hpet: Replace one-element array with flexible-array member
authorKees Cook <keescook@chromium.org>
Fri, 18 Nov 2022 03:42:55 +0000 (19:42 -0800)
committerKees Cook <keescook@chromium.org>
Fri, 2 Dec 2022 21:10:36 +0000 (13:10 -0800)
One-element arrays are deprecated[1] and are being replaced with
flexible array members in support of the ongoing efforts to tighten the
FORTIFY_SOURCE routines on memcpy(), correctly instrument array indexing
with UBSAN_BOUNDS, and to globally enable -fstrict-flex-arrays=3.

Replace one-element array with flexible-array member in struct hpet.

This results in no differences in binary output. The use of struct hpet
is never used with sizeof() and accesses via hpet_timers array are
already done after explicit bounds checking.

[1] https://github.com/KSPP/linux/issues/79

Cc: Clemens Ladisch <clemens@ladisch.de>
Cc: "Gustavo A. R. Silva" <gustavoars@kernel.org>
Signed-off-by: Kees Cook <keescook@chromium.org>
Reviewed-by: Gustavo A. R. Silva <gustavoars@kernel.org>
Link: https://lore.kernel.org/r/20221118034250.never.999-kees@kernel.org
include/linux/hpet.h

index 8604564..21e69ea 100644 (file)
@@ -30,7 +30,7 @@ struct hpet {
                        unsigned long _hpet_compare;
                } _u1;
                u64 hpet_fsb[2];        /* FSB route */
-       } hpet_timers[1];
+       } hpet_timers[];
 };
 
 #define        hpet_mc         _u0._hpet_mc