diff options
Diffstat (limited to 'net/ipv6')
-rw-r--r-- | net/ipv6/addrconf.c | 2 | ||||
-rw-r--r-- | net/ipv6/tcp_ipv6.c | 11 |
2 files changed, 7 insertions, 6 deletions
diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c index 1bd8d818f8e9..567664eac463 100644 --- a/net/ipv6/addrconf.c +++ b/net/ipv6/addrconf.c | |||
@@ -967,7 +967,7 @@ int ipv6_dev_get_saddr(struct net_device *daddr_dev, | |||
967 | if (unlikely(score.addr_type == IPV6_ADDR_ANY || | 967 | if (unlikely(score.addr_type == IPV6_ADDR_ANY || |
968 | score.addr_type & IPV6_ADDR_MULTICAST)) { | 968 | score.addr_type & IPV6_ADDR_MULTICAST)) { |
969 | LIMIT_NETDEBUG(KERN_DEBUG | 969 | LIMIT_NETDEBUG(KERN_DEBUG |
970 | "ADDRCONF: unspecified / multicast address" | 970 | "ADDRCONF: unspecified / multicast address " |
971 | "assigned as unicast address on %s", | 971 | "assigned as unicast address on %s", |
972 | dev->name); | 972 | dev->name); |
973 | continue; | 973 | continue; |
diff --git a/net/ipv6/tcp_ipv6.c b/net/ipv6/tcp_ipv6.c index 3aad861975a0..93980c3b83e6 100644 --- a/net/ipv6/tcp_ipv6.c +++ b/net/ipv6/tcp_ipv6.c | |||
@@ -581,7 +581,10 @@ static int tcp_v6_md5_do_add(struct sock *sk, struct in6_addr *peer, | |||
581 | } | 581 | } |
582 | sk->sk_route_caps &= ~NETIF_F_GSO_MASK; | 582 | sk->sk_route_caps &= ~NETIF_F_GSO_MASK; |
583 | } | 583 | } |
584 | tcp_alloc_md5sig_pool(); | 584 | if (tcp_alloc_md5sig_pool() == NULL) { |
585 | kfree(newkey); | ||
586 | return -ENOMEM; | ||
587 | } | ||
585 | if (tp->md5sig_info->alloced6 == tp->md5sig_info->entries6) { | 588 | if (tp->md5sig_info->alloced6 == tp->md5sig_info->entries6) { |
586 | keys = kmalloc((sizeof (tp->md5sig_info->keys6[0]) * | 589 | keys = kmalloc((sizeof (tp->md5sig_info->keys6[0]) * |
587 | (tp->md5sig_info->entries6 + 1)), GFP_ATOMIC); | 590 | (tp->md5sig_info->entries6 + 1)), GFP_ATOMIC); |
@@ -634,10 +637,6 @@ static int tcp_v6_md5_do_del(struct sock *sk, struct in6_addr *peer) | |||
634 | kfree(tp->md5sig_info->keys6); | 637 | kfree(tp->md5sig_info->keys6); |
635 | tp->md5sig_info->keys6 = NULL; | 638 | tp->md5sig_info->keys6 = NULL; |
636 | tp->md5sig_info->alloced6 = 0; | 639 | tp->md5sig_info->alloced6 = 0; |
637 | |||
638 | tcp_free_md5sig_pool(); | ||
639 | |||
640 | return 0; | ||
641 | } else { | 640 | } else { |
642 | /* shrink the database */ | 641 | /* shrink the database */ |
643 | if (tp->md5sig_info->entries6 != i) | 642 | if (tp->md5sig_info->entries6 != i) |
@@ -646,6 +645,8 @@ static int tcp_v6_md5_do_del(struct sock *sk, struct in6_addr *peer) | |||
646 | (tp->md5sig_info->entries6 - i) | 645 | (tp->md5sig_info->entries6 - i) |
647 | * sizeof (tp->md5sig_info->keys6[0])); | 646 | * sizeof (tp->md5sig_info->keys6[0])); |
648 | } | 647 | } |
648 | tcp_free_md5sig_pool(); | ||
649 | return 0; | ||
649 | } | 650 | } |
650 | } | 651 | } |
651 | return -ENOENT; | 652 | return -ENOENT; |