Message ID | 69d7e69346986e2fdb994d4382954c932f9f0993.1647760213.git.christophe.jaillet@wanadoo.fr (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | memory: samsung: exynos5422-dmc: Avoid some over memory allocation | expand |
On 20/03/2022 08:10, Christophe JAILLET wrote: > 'dmc->counter' is a 'struct devfreq_event_dev **', so there is some > over memory allocation. 'counters_size' should be computed with > 'sizeof(struct devfreq_event_dev *)'. > > Use 'sizeof(*dmc->counter)' instead to fix it. > > While at it, use devm_kcalloc() instead of devm_kzalloc()+open coded > multiplication. > > Fixes: 6e7674c3c6df ("memory: Add DMC driver for Exynos5422") > Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr> > --- > devm_kmalloc_array() could also be used to save a few cycles because the > array is fully initialized a few lines below. > --- > drivers/memory/samsung/exynos5422-dmc.c | 5 ++--- > 1 file changed, 2 insertions(+), 3 deletions(-) > Thanks, looks good. I'll take it after merge window. Best regards, Krzysztof
On Sun, 20 Mar 2022 08:10:30 +0100, Christophe JAILLET wrote: > 'dmc->counter' is a 'struct devfreq_event_dev **', so there is some > over memory allocation. 'counters_size' should be computed with > 'sizeof(struct devfreq_event_dev *)'. > > Use 'sizeof(*dmc->counter)' instead to fix it. > > While at it, use devm_kcalloc() instead of devm_kzalloc()+open coded > multiplication. > > [...] Applied, thanks! [1/1] memory: samsung: exynos5422-dmc: Avoid some over memory allocation commit: 56653827f0d7bc7c2d8bac0e119fd1521fa9990a Best regards,
diff --git a/drivers/memory/samsung/exynos5422-dmc.c b/drivers/memory/samsung/exynos5422-dmc.c index 9c8318923ed0..4733e7898ffe 100644 --- a/drivers/memory/samsung/exynos5422-dmc.c +++ b/drivers/memory/samsung/exynos5422-dmc.c @@ -1322,7 +1322,6 @@ static int exynos5_dmc_init_clks(struct exynos5_dmc *dmc) */ static int exynos5_performance_counters_init(struct exynos5_dmc *dmc) { - int counters_size; int ret, i; dmc->num_counters = devfreq_event_get_edev_count(dmc->dev, @@ -1332,8 +1331,8 @@ static int exynos5_performance_counters_init(struct exynos5_dmc *dmc) return dmc->num_counters; } - counters_size = sizeof(struct devfreq_event_dev) * dmc->num_counters; - dmc->counter = devm_kzalloc(dmc->dev, counters_size, GFP_KERNEL); + dmc->counter = devm_kcalloc(dmc->dev, dmc->num_counters, + sizeof(*dmc->counter), GFP_KERNEL); if (!dmc->counter) return -ENOMEM;
'dmc->counter' is a 'struct devfreq_event_dev **', so there is some over memory allocation. 'counters_size' should be computed with 'sizeof(struct devfreq_event_dev *)'. Use 'sizeof(*dmc->counter)' instead to fix it. While at it, use devm_kcalloc() instead of devm_kzalloc()+open coded multiplication. Fixes: 6e7674c3c6df ("memory: Add DMC driver for Exynos5422") Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr> --- devm_kmalloc_array() could also be used to save a few cycles because the array is fully initialized a few lines below. --- drivers/memory/samsung/exynos5422-dmc.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-)