Message ID | ZMh45KH2iPIpNktr@work (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [v3] cpufreq: brcmstb-avs-cpufreq: Fix -Warray-bounds bug | expand |
On 7/31/23 20:15, Gustavo A. R. Silva wrote: > Allocate extra space for terminating element at: > > drivers/cpufreq/brcmstb-avs-cpufreq.c: > 449 table[i].frequency = CPUFREQ_TABLE_END; > > and add code comment to make this clear. > > This fixes the following -Warray-bounds warning seen after building > ARM with multi_v7_defconfig (GCC 13): > In function 'brcm_avs_get_freq_table', > inlined from 'brcm_avs_cpufreq_init' at drivers/cpufreq/brcmstb-avs-cpufreq.c:623:15: > drivers/cpufreq/brcmstb-avs-cpufreq.c:449:28: warning: array subscript 5 is outside array bounds of 'void[60]' [-Warray-bounds=] > 449 | table[i].frequency = CPUFREQ_TABLE_END; > In file included from include/linux/node.h:18, > from include/linux/cpu.h:17, > from include/linux/cpufreq.h:12, > from drivers/cpufreq/brcmstb-avs-cpufreq.c:44: > In function 'devm_kmalloc_array', > inlined from 'devm_kcalloc' at include/linux/device.h:328:9, > inlined from 'brcm_avs_get_freq_table' at drivers/cpufreq/brcmstb-avs-cpufreq.c:437:10, > inlined from 'brcm_avs_cpufreq_init' at drivers/cpufreq/brcmstb-avs-cpufreq.c:623:15: > include/linux/device.h:323:16: note: at offset 60 into object of size 60 allocated by 'devm_kmalloc' > 323 | return devm_kmalloc(dev, bytes, flags); > | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > > This helps with the ongoing efforts to tighten the FORTIFY_SOURCE > routines on memcpy() and help us make progress towards globally > enabling -Warray-bounds. > > Link: https://github.com/KSPP/linux/issues/324 > Fixes: de322e085995 ("cpufreq: brcmstb-avs-cpufreq: AVS CPUfreq driver for Broadcom STB SoCs") > Cc: stable@vger.kernel.org > Signed-off-by: Gustavo A. R. Silva <gustavoars@kernel.org> Reviewed-by: Florian Fainelli <florian.fainelli@broadcom.com>
On 01-08-23, 10:05, Florian Fainelli wrote: > On 7/31/23 20:15, Gustavo A. R. Silva wrote: > > Allocate extra space for terminating element at: > > > > drivers/cpufreq/brcmstb-avs-cpufreq.c: > > 449 table[i].frequency = CPUFREQ_TABLE_END; > > > > and add code comment to make this clear. > > > > This fixes the following -Warray-bounds warning seen after building > > ARM with multi_v7_defconfig (GCC 13): > > In function 'brcm_avs_get_freq_table', > > inlined from 'brcm_avs_cpufreq_init' at drivers/cpufreq/brcmstb-avs-cpufreq.c:623:15: > > drivers/cpufreq/brcmstb-avs-cpufreq.c:449:28: warning: array subscript 5 is outside array bounds of 'void[60]' [-Warray-bounds=] > > 449 | table[i].frequency = CPUFREQ_TABLE_END; > > In file included from include/linux/node.h:18, > > from include/linux/cpu.h:17, > > from include/linux/cpufreq.h:12, > > from drivers/cpufreq/brcmstb-avs-cpufreq.c:44: > > In function 'devm_kmalloc_array', > > inlined from 'devm_kcalloc' at include/linux/device.h:328:9, > > inlined from 'brcm_avs_get_freq_table' at drivers/cpufreq/brcmstb-avs-cpufreq.c:437:10, > > inlined from 'brcm_avs_cpufreq_init' at drivers/cpufreq/brcmstb-avs-cpufreq.c:623:15: > > include/linux/device.h:323:16: note: at offset 60 into object of size 60 allocated by 'devm_kmalloc' > > 323 | return devm_kmalloc(dev, bytes, flags); > > | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > > > > This helps with the ongoing efforts to tighten the FORTIFY_SOURCE > > routines on memcpy() and help us make progress towards globally > > enabling -Warray-bounds. > > > > Link: https://github.com/KSPP/linux/issues/324 > > Fixes: de322e085995 ("cpufreq: brcmstb-avs-cpufreq: AVS CPUfreq driver for Broadcom STB SoCs") > > Cc: stable@vger.kernel.org > > Signed-off-by: Gustavo A. R. Silva <gustavoars@kernel.org> > > Reviewed-by: Florian Fainelli <florian.fainelli@broadcom.com> Applied. Thanks.
On 8/2/23 23:56, Viresh Kumar wrote: > > Applied. Thanks. > Great. :) Thank you -- Gustavo
diff --git a/drivers/cpufreq/brcmstb-avs-cpufreq.c b/drivers/cpufreq/brcmstb-avs-cpufreq.c index ffea6402189d..3052949aebbc 100644 --- a/drivers/cpufreq/brcmstb-avs-cpufreq.c +++ b/drivers/cpufreq/brcmstb-avs-cpufreq.c @@ -434,7 +434,11 @@ brcm_avs_get_freq_table(struct device *dev, struct private_data *priv) if (ret) return ERR_PTR(ret); - table = devm_kcalloc(dev, AVS_PSTATE_MAX + 1, sizeof(*table), + /* + * We allocate space for the 5 different P-STATES AVS, + * plus extra space for a terminating element. + */ + table = devm_kcalloc(dev, AVS_PSTATE_MAX + 1 + 1, sizeof(*table), GFP_KERNEL); if (!table) return ERR_PTR(-ENOMEM);
Allocate extra space for terminating element at: drivers/cpufreq/brcmstb-avs-cpufreq.c: 449 table[i].frequency = CPUFREQ_TABLE_END; and add code comment to make this clear. This fixes the following -Warray-bounds warning seen after building ARM with multi_v7_defconfig (GCC 13): In function 'brcm_avs_get_freq_table', inlined from 'brcm_avs_cpufreq_init' at drivers/cpufreq/brcmstb-avs-cpufreq.c:623:15: drivers/cpufreq/brcmstb-avs-cpufreq.c:449:28: warning: array subscript 5 is outside array bounds of 'void[60]' [-Warray-bounds=] 449 | table[i].frequency = CPUFREQ_TABLE_END; In file included from include/linux/node.h:18, from include/linux/cpu.h:17, from include/linux/cpufreq.h:12, from drivers/cpufreq/brcmstb-avs-cpufreq.c:44: In function 'devm_kmalloc_array', inlined from 'devm_kcalloc' at include/linux/device.h:328:9, inlined from 'brcm_avs_get_freq_table' at drivers/cpufreq/brcmstb-avs-cpufreq.c:437:10, inlined from 'brcm_avs_cpufreq_init' at drivers/cpufreq/brcmstb-avs-cpufreq.c:623:15: include/linux/device.h:323:16: note: at offset 60 into object of size 60 allocated by 'devm_kmalloc' 323 | return devm_kmalloc(dev, bytes, flags); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ This helps with the ongoing efforts to tighten the FORTIFY_SOURCE routines on memcpy() and help us make progress towards globally enabling -Warray-bounds. Link: https://github.com/KSPP/linux/issues/324 Fixes: de322e085995 ("cpufreq: brcmstb-avs-cpufreq: AVS CPUfreq driver for Broadcom STB SoCs") Cc: stable@vger.kernel.org Signed-off-by: Gustavo A. R. Silva <gustavoars@kernel.org> --- Changes in v3: - Allocate extra space for a terminating element. (Kees Cook) - Update changelog text. Changes in v2: - Update changelog text. Add more details. - Link: https://lore.kernel.org/linux-hardening/202307311610.B1EB796684@keescook/ v1: - Link: https://lore.kernel.org/linux-hardening/ZMgfWEA0GAN%2FRog8@work/ drivers/cpufreq/brcmstb-avs-cpufreq.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-)