diff options
-rw-r--r-- | net/ipv6/addrconf.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c index 1237d5d037d8..5fd8ec895c8b 100644 --- a/net/ipv6/addrconf.c +++ b/net/ipv6/addrconf.c | |||
@@ -1070,8 +1070,10 @@ static int ipv6_get_saddr_eval(struct net *net, | |||
1070 | break; | 1070 | break; |
1071 | case IPV6_SADDR_RULE_PREFIX: | 1071 | case IPV6_SADDR_RULE_PREFIX: |
1072 | /* Rule 8: Use longest matching prefix */ | 1072 | /* Rule 8: Use longest matching prefix */ |
1073 | score->matchlen = ret = ipv6_addr_diff(&score->ifa->addr, | 1073 | ret = ipv6_addr_diff(&score->ifa->addr, dst->addr); |
1074 | dst->addr); | 1074 | if (ret > score->ifa->prefix_len) |
1075 | ret = score->ifa->prefix_len; | ||
1076 | score->matchlen = ret; | ||
1075 | break; | 1077 | break; |
1076 | default: | 1078 | default: |
1077 | ret = 0; | 1079 | ret = 0; |