aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBen Hutchings <bhutchings@solarflare.com>2011-09-06 08:44:25 -0400
committerDavid S. Miller <davem@davemloft.net>2011-09-20 15:40:12 -0400
commit710778ff878a06654175863db133293007d45aee (patch)
tree5c620bea04a61301dbaa7ca5280e64caf76a732c
parent22e83a2926998fe132ae4dd26f1e998c70ae2e38 (diff)
gianfar: Fix overflow check and return value for gfar_get_cls_all()
This function may currently fill one entry beyond the end of the array it is given. It also doesn't return an error code in case it does detect overflow. Signed-off-by: Ben Hutchings <bhutchings@solarflare.com> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--drivers/net/gianfar_ethtool.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/drivers/net/gianfar_ethtool.c b/drivers/net/gianfar_ethtool.c
index 25a8c2adb001..0caf3c323ec0 100644
--- a/drivers/net/gianfar_ethtool.c
+++ b/drivers/net/gianfar_ethtool.c
@@ -1669,10 +1669,10 @@ static int gfar_get_cls_all(struct gfar_private *priv,
1669 u32 i = 0; 1669 u32 i = 0;
1670 1670
1671 list_for_each_entry(comp, &priv->rx_list.list, list) { 1671 list_for_each_entry(comp, &priv->rx_list.list, list) {
1672 if (i <= cmd->rule_cnt) { 1672 if (i == cmd->rule_cnt)
1673 rule_locs[i] = comp->fs.location; 1673 return -EMSGSIZE;
1674 i++; 1674 rule_locs[i] = comp->fs.location;
1675 } 1675 i++;
1676 } 1676 }
1677 1677
1678 cmd->data = MAX_FILER_IDX; 1678 cmd->data = MAX_FILER_IDX;