diff mbox

[net-next] rocker: replace fixed stack allocation with dynamic allocation

Message ID 1426485886-61607-1-git-send-email-sfeldma@gmail.com
State Accepted, archived
Delegated to: David Miller
Headers show

Commit Message

Scott Feldman March 16, 2015, 6:04 a.m. UTC
From: Scott Feldman <sfeldma@gmail.com>

In hast to fix some sparse warning, I hard-coded a fix-sized array on the stack
which is probably too big for kernel standards.  Fix this by converting array
to dynamic allocation.

Signed-off-by: Scott Feldman <sfeldma@gmail.com>
---
 drivers/net/ethernet/rocker/rocker.c |   13 ++++++++++---
 1 file changed, 10 insertions(+), 3 deletions(-)

Comments

Jiri Pirko March 16, 2015, 6:40 a.m. UTC | #1
Mon, Mar 16, 2015 at 07:04:46AM CET, sfeldma@gmail.com wrote:
>From: Scott Feldman <sfeldma@gmail.com>
>
>In hast to fix some sparse warning, I hard-coded a fix-sized array on the stack
>which is probably too big for kernel standards.  Fix this by converting array
>to dynamic allocation.
>
>Signed-off-by: Scott Feldman <sfeldma@gmail.com>

Acked-by: Jiri Pirko <jiri@resnulli.us>
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
David Miller March 16, 2015, 7:57 p.m. UTC | #2
From: sfeldma@gmail.com
Date: Sun, 15 Mar 2015 23:04:46 -0700

> From: Scott Feldman <sfeldma@gmail.com>
> 
> In hast to fix some sparse warning, I hard-coded a fix-sized array on the stack
> which is probably too big for kernel standards.  Fix this by converting array
> to dynamic allocation.
> 
> Signed-off-by: Scott Feldman <sfeldma@gmail.com>

Applied, thanks.
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/drivers/net/ethernet/rocker/rocker.c b/drivers/net/ethernet/rocker/rocker.c
index bc5f27a..2511ae2 100644
--- a/drivers/net/ethernet/rocker/rocker.c
+++ b/drivers/net/ethernet/rocker/rocker.c
@@ -2955,11 +2955,16 @@  static int rocker_port_vlan_flood_group(struct rocker_port *rocker_port,
 	struct rocker_port *p;
 	struct rocker *rocker = rocker_port->rocker;
 	u32 group_id = ROCKER_GROUP_L2_FLOOD(vlan_id, 0);
-	u32 group_ids[ROCKER_FP_PORTS_MAX];
+	u32 *group_ids;
 	u8 group_count = 0;
-	int err;
+	int err = 0;
 	int i;
 
+	group_ids = kcalloc(rocker->port_count, sizeof(u32),
+			    rocker_op_flags_gfp(flags));
+	if (!group_ids)
+		return -ENOMEM;
+
 	/* Adjust the flood group for this VLAN.  The flood group
 	 * references an L2 interface group for each port in this
 	 * VLAN.
@@ -2977,7 +2982,7 @@  static int rocker_port_vlan_flood_group(struct rocker_port *rocker_port,
 
 	/* If there are no bridged ports in this VLAN, we're done */
 	if (group_count == 0)
-		return 0;
+		goto no_ports_in_vlan;
 
 	err = rocker_group_l2_flood(rocker_port, flags, vlan_id,
 				    group_count, group_ids,
@@ -2986,6 +2991,8 @@  static int rocker_port_vlan_flood_group(struct rocker_port *rocker_port,
 		netdev_err(rocker_port->dev,
 			   "Error (%d) port VLAN l2 flood group\n", err);
 
+no_ports_in_vlan:
+	kfree(group_ids);
 	return err;
 }