On Thu, Mar 8, 2018 at 7:03 PM, Gustavo A. R. Silva <garsilva@xxxxxxxxxxxxxx> wrote: > > > On 03/08/2018 11:58 AM, Kees Cook wrote: >> >> On Thu, Mar 8, 2018 at 9:20 AM, Gustavo A. R. Silva >> <gustavo@xxxxxxxxxxxxxx> wrote: >>> >>> In preparation to enabling -Wvla, remove VLAs and replace them >>> with fixed-length arrays instead. >>> >>> From a security viewpoint, the use of Variable Length Arrays can be >>> a vector for stack overflow attacks. Also, in general, as the code >>> evolves it is easy to lose track of how big a VLA can get. Thus, we >>> can end up having segfaults that are hard to debug. >>> >>> Also, fixed as part of the directive to remove all VLAs from >>> the kernel: https://lkml.org/lkml/2018/3/7/621 >>> >>> Signed-off-by: Gustavo A. R. Silva <gustavo@xxxxxxxxxxxxxx> >>> --- >>> drivers/rtc/rtc-s5m.c | 15 +++++++++------ >>> 1 file changed, 9 insertions(+), 6 deletions(-) >>> >>> diff --git a/drivers/rtc/rtc-s5m.c b/drivers/rtc/rtc-s5m.c >>> index 6deae10..2b5f4f7 100644 >>> --- a/drivers/rtc/rtc-s5m.c >>> +++ b/drivers/rtc/rtc-s5m.c >>> @@ -38,6 +38,9 @@ >>> */ >>> #define UDR_READ_RETRY_CNT 5 >>> >>> +/* Maximum number of registers for setting time/alarm0/alarm1 */ >>> +#define MAX_NUM_TIME_REGS 8 >> >> >> I would adjust the various const struct s5m_rtc_reg_config's >> .regs_count to be represented by this new define, so the stack and the >> structures stay in sync. Something like: >> >> static const struct s5m_rtc_reg_config s2mps13_rtc_regs = { >> .regs_count = MAX_NUM_TIME_REGS - 1, >> >> ? >> > > Yep. I thought about that and decided to wait for some feedback first. But > yeah, I think is that'd be a good change. Define and these assignments should be somehow connected with enum defining the offsets for data[] (from include/linux/mfd/samsung/rtc.h). Otherwise we define the same in two places. The enum could be itself (in separate patch) moved to the driver because it is meaningless for others. Best regards, Krzysztof