Skip to content

Commit

Permalink
rocker: replace fixed stack allocation with dynamic allocation
Browse files Browse the repository at this point in the history
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>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Scott Feldman authored and David S. Miller committed Mar 16, 2015
1 parent b35f504 commit 04f49fa
Showing 1 changed file with 10 additions and 3 deletions.
13 changes: 10 additions & 3 deletions drivers/net/ethernet/rocker/rocker.c
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand All @@ -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,
Expand All @@ -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;
}

Expand Down

0 comments on commit 04f49fa

Please sign in to comment.