diff options
Diffstat (limited to 'net/sunrpc/addr.c')
| -rw-r--r-- | net/sunrpc/addr.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/net/sunrpc/addr.c b/net/sunrpc/addr.c index 6dcdd2517819..1419d0cdbbac 100644 --- a/net/sunrpc/addr.c +++ b/net/sunrpc/addr.c | |||
| @@ -18,6 +18,7 @@ | |||
| 18 | 18 | ||
| 19 | #include <net/ipv6.h> | 19 | #include <net/ipv6.h> |
| 20 | #include <linux/sunrpc/clnt.h> | 20 | #include <linux/sunrpc/clnt.h> |
| 21 | #include <linux/slab.h> | ||
| 21 | 22 | ||
| 22 | #if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE) | 23 | #if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE) |
| 23 | 24 | ||
| @@ -71,8 +72,9 @@ static size_t rpc_ntop6(const struct sockaddr *sap, | |||
| 71 | if (unlikely(len == 0)) | 72 | if (unlikely(len == 0)) |
| 72 | return len; | 73 | return len; |
| 73 | 74 | ||
| 74 | if (!(ipv6_addr_type(&sin6->sin6_addr) & IPV6_ADDR_LINKLOCAL) && | 75 | if (!(ipv6_addr_type(&sin6->sin6_addr) & IPV6_ADDR_LINKLOCAL)) |
| 75 | !(ipv6_addr_type(&sin6->sin6_addr) & IPV6_ADDR_SITELOCAL)) | 76 | return len; |
| 77 | if (sin6->sin6_scope_id == 0) | ||
| 76 | return len; | 78 | return len; |
| 77 | 79 | ||
| 78 | rc = snprintf(scopebuf, sizeof(scopebuf), "%c%u", | 80 | rc = snprintf(scopebuf, sizeof(scopebuf), "%c%u", |
| @@ -165,8 +167,7 @@ static int rpc_parse_scope_id(const char *buf, const size_t buflen, | |||
| 165 | if (*delim != IPV6_SCOPE_DELIMITER) | 167 | if (*delim != IPV6_SCOPE_DELIMITER) |
| 166 | return 0; | 168 | return 0; |
| 167 | 169 | ||
| 168 | if (!(ipv6_addr_type(&sin6->sin6_addr) & IPV6_ADDR_LINKLOCAL) && | 170 | if (!(ipv6_addr_type(&sin6->sin6_addr) & IPV6_ADDR_LINKLOCAL)) |
| 169 | !(ipv6_addr_type(&sin6->sin6_addr) & IPV6_ADDR_SITELOCAL)) | ||
| 170 | return 0; | 171 | return 0; |
| 171 | 172 | ||
| 172 | len = (buf + buflen) - delim - 1; | 173 | len = (buf + buflen) - delim - 1; |
