From: Jiri Pirko <jpirko@redhat.com>
Date: Thu, 17 Nov 2011 04:16:05 +0000 (+0000)
Subject: team: avoid using variable-length array
X-Git-Tag: firefly_0821_release~3680^2~3834^2~532
X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=2bba19fff8d09bf19df5d5e2de7188d65de67c3e;p=firefly-linux-kernel-4.4.55.git

team: avoid using variable-length array

Apparently using variable-length array is not correct
(https://lkml.org/lkml/2011/10/23/25). So remove it.

Signed-off-by: Jiri Pirko <jpirko@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
---

diff --git a/drivers/net/team/team.c b/drivers/net/team/team.c
index 5b169c18aaf6..c48ef19cac13 100644
--- a/drivers/net/team/team.c
+++ b/drivers/net/team/team.c
@@ -96,10 +96,13 @@ int team_options_register(struct team *team,
 			  size_t option_count)
 {
 	int i;
-	struct team_option *dst_opts[option_count];
+	struct team_option **dst_opts;
 	int err;
 
-	memset(dst_opts, 0, sizeof(dst_opts));
+	dst_opts = kzalloc(sizeof(struct team_option *) * option_count,
+			   GFP_KERNEL);
+	if (!dst_opts)
+		return -ENOMEM;
 	for (i = 0; i < option_count; i++, option++) {
 		struct team_option *dst_opt;
 
@@ -119,12 +122,14 @@ int team_options_register(struct team *team,
 	for (i = 0; i < option_count; i++)
 		list_add_tail(&dst_opts[i]->list, &team->option_list);
 
+	kfree(dst_opts);
 	return 0;
 
 rollback:
 	for (i = 0; i < option_count; i++)
 		kfree(dst_opts[i]);
 
+	kfree(dst_opts);
 	return err;
 }