diff options
| author | Ben Hutchings <bhutchings@solarflare.com> | 2011-09-06 08:44:25 -0400 |
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2011-09-20 15:40:12 -0400 |
| commit | 710778ff878a06654175863db133293007d45aee (patch) | |
| tree | 5c620bea04a61301dbaa7ca5280e64caf76a732c | |
| parent | 22e83a2926998fe132ae4dd26f1e998c70ae2e38 (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.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/drivers/net/gianfar_ethtool.c b/drivers/net/gianfar_ethtool.c index 25a8c2adb00..0caf3c323ec 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; |
