| From foo@baz Fri Nov 7 11:36:50 PST 2014 |
| From: Jiri Pirko <jiri@resnulli.us> |
| Date: Mon, 13 Oct 2014 16:34:10 +0200 |
| Subject: ipv4: fix nexthop attlen check in fib_nh_match |
| |
| From: Jiri Pirko <jiri@resnulli.us> |
| |
| [ Upstream commit f76936d07c4eeb36d8dbb64ebd30ab46ff85d9f7 ] |
| |
| fib_nh_match does not match nexthops correctly. Example: |
| |
| ip route add 172.16.10/24 nexthop via 192.168.122.12 dev eth0 \ |
| nexthop via 192.168.122.13 dev eth0 |
| ip route del 172.16.10/24 nexthop via 192.168.122.14 dev eth0 \ |
| nexthop via 192.168.122.15 dev eth0 |
| |
| Del command is successful and route is removed. After this patch |
| applied, the route is correctly matched and result is: |
| RTNETLINK answers: No such process |
| |
| Please consider this for stable trees as well. |
| |
| Fixes: 4e902c57417c4 ("[IPv4]: FIB configuration using struct fib_config") |
| Signed-off-by: Jiri Pirko <jiri@resnulli.us> |
| Acked-by: Eric Dumazet <edumazet@google.com> |
| Signed-off-by: David S. Miller <davem@davemloft.net> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| net/ipv4/fib_semantics.c | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| --- a/net/ipv4/fib_semantics.c |
| +++ b/net/ipv4/fib_semantics.c |
| @@ -535,7 +535,7 @@ int fib_nh_match(struct fib_config *cfg, |
| return 1; |
| |
| attrlen = rtnh_attrlen(rtnh); |
| - if (attrlen < 0) { |
| + if (attrlen > 0) { |
| struct nlattr *nla, *attrs = rtnh_attrs(rtnh); |
| |
| nla = nla_find(attrs, attrlen, RTA_GATEWAY); |