From: Gustavo A. R. Silva Date: Wed, 7 Aug 2019 16:13:12 +0000 (-0500) Subject: video: fbdev/mmp/core: Use struct_size() in kzalloc() X-Git-Url: http://git.lede-project.org./?a=commitdiff_plain;h=06b1f4b9f2a050e84f34f507bbd5f9983eeb0a06;p=openwrt%2Fstaging%2Fblogic.git video: fbdev/mmp/core: Use struct_size() in kzalloc() One of the more common cases of allocation size calculations is finding the size of a structure that has a zero-sized array at the end, along with memory for some number of elements for that array. For example: struct mmp_path { ... struct mmp_overlay overlays[0]; }; size = sizeof(struct mmp_path) + count * sizeof(struct mmp_overlay); instance = kzalloc(size, GFP_KERNEL) Instead of leaving these open-coded and prone to type mistakes, we can now use the new struct_size() helper: instance = kzalloc(struct_size(instance, overlays, count), GFP_KERNEL) Notice that, in this case, variable size is not necessary, hence it is removed. This code was detected with the help of Coccinelle. Signed-off-by: Gustavo A. R. Silva Signed-off-by: Bartlomiej Zolnierkiewicz Link: https://patchwork.freedesktop.org/patch/msgid/20190807161312.GA26835@embeddedor --- diff --git a/drivers/video/fbdev/mmp/core.c b/drivers/video/fbdev/mmp/core.c index 0ffc1b7b7052..154127256a2c 100644 --- a/drivers/video/fbdev/mmp/core.c +++ b/drivers/video/fbdev/mmp/core.c @@ -153,13 +153,11 @@ EXPORT_SYMBOL_GPL(mmp_get_path); struct mmp_path *mmp_register_path(struct mmp_path_info *info) { int i; - size_t size; struct mmp_path *path = NULL; struct mmp_panel *panel; - size = sizeof(struct mmp_path) - + sizeof(struct mmp_overlay) * info->overlay_num; - path = kzalloc(size, GFP_KERNEL); + path = kzalloc(struct_size(path, overlays, info->overlay_num), + GFP_KERNEL); if (!path) return NULL;