Make use of the flex_array_size() helper to calculate the size of a
flexible array member within an enclosing structure.

This helper offers defense-in-depth against potential integer
overflows, while at the same time makes it explicitly clear that
we are dealing with a flexible array member.

Also, remove unnecessary braces.

Signed-off-by: Gustavo A. R. Silva <gustavo...@kernel.org>
---
 mm/memcontrol.c | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/mm/memcontrol.c b/mm/memcontrol.c
index e84c2b5596f2..bd7f972ceea4 100644
--- a/mm/memcontrol.c
+++ b/mm/memcontrol.c
@@ -4246,10 +4246,9 @@ static int __mem_cgroup_usage_register_event(struct 
mem_cgroup *memcg,
        new->size = size;
 
        /* Copy thresholds (if any) to new array */
-       if (thresholds->primary) {
-               memcpy(new->entries, thresholds->primary->entries, (size - 1) *
-                               sizeof(struct mem_cgroup_threshold));
-       }
+       if (thresholds->primary)
+               memcpy(new->entries, thresholds->primary->entries,
+                      flex_array_size(new, entries, size - 1));
 
        /* Add new threshold */
        new->entries[size - 1].eventfd = eventfd;
-- 
2.27.0

Reply via email to