diff options
Diffstat (limited to 'net/sctp/ipv6.c')
-rw-r--r-- | net/sctp/ipv6.c | 8 |
1 files changed, 3 insertions, 5 deletions
diff --git a/net/sctp/ipv6.c b/net/sctp/ipv6.c index b9ed271b7ef7..6200cd2b4b99 100644 --- a/net/sctp/ipv6.c +++ b/net/sctp/ipv6.c | |||
@@ -97,11 +97,9 @@ static int sctp_inet6addr_event(struct notifier_block *this, unsigned long ev, | |||
97 | 97 | ||
98 | switch (ev) { | 98 | switch (ev) { |
99 | case NETDEV_UP: | 99 | case NETDEV_UP: |
100 | addr = kmalloc(sizeof(struct sctp_sockaddr_entry), GFP_ATOMIC); | 100 | addr = kzalloc(sizeof(*addr), GFP_ATOMIC); |
101 | if (addr) { | 101 | if (addr) { |
102 | addr->a.v6.sin6_family = AF_INET6; | 102 | addr->a.v6.sin6_family = AF_INET6; |
103 | addr->a.v6.sin6_port = 0; | ||
104 | addr->a.v6.sin6_flowinfo = 0; | ||
105 | addr->a.v6.sin6_addr = ifa->addr; | 103 | addr->a.v6.sin6_addr = ifa->addr; |
106 | addr->a.v6.sin6_scope_id = ifa->idev->dev->ifindex; | 104 | addr->a.v6.sin6_scope_id = ifa->idev->dev->ifindex; |
107 | addr->valid = 1; | 105 | addr->valid = 1; |
@@ -282,7 +280,8 @@ static void sctp_v6_get_dst(struct sctp_transport *t, union sctp_addr *saddr, | |||
282 | 280 | ||
283 | if (saddr) { | 281 | if (saddr) { |
284 | fl6->saddr = saddr->v6.sin6_addr; | 282 | fl6->saddr = saddr->v6.sin6_addr; |
285 | fl6->fl6_sport = saddr->v6.sin6_port; | 283 | if (!fl6->fl6_sport) |
284 | fl6->fl6_sport = saddr->v6.sin6_port; | ||
286 | 285 | ||
287 | pr_debug("src=%pI6 - ", &fl6->saddr); | 286 | pr_debug("src=%pI6 - ", &fl6->saddr); |
288 | } | 287 | } |
@@ -434,7 +433,6 @@ static void sctp_v6_copy_addrlist(struct list_head *addrlist, | |||
434 | addr = kzalloc(sizeof(*addr), GFP_ATOMIC); | 433 | addr = kzalloc(sizeof(*addr), GFP_ATOMIC); |
435 | if (addr) { | 434 | if (addr) { |
436 | addr->a.v6.sin6_family = AF_INET6; | 435 | addr->a.v6.sin6_family = AF_INET6; |
437 | addr->a.v6.sin6_port = 0; | ||
438 | addr->a.v6.sin6_addr = ifp->addr; | 436 | addr->a.v6.sin6_addr = ifp->addr; |
439 | addr->a.v6.sin6_scope_id = dev->ifindex; | 437 | addr->a.v6.sin6_scope_id = dev->ifindex; |
440 | addr->valid = 1; | 438 | addr->valid = 1; |