diff options
author | James Bottomley <James.Bottomley@HansenPartnership.com> | 2016-01-07 15:51:13 -0800 |
---|---|---|
committer | James Bottomley <James.Bottomley@HansenPartnership.com> | 2016-01-07 15:51:13 -0800 |
commit | abaee091a18c19ccd86feb1c8374585d82e96777 (patch) | |
tree | 01602bae73e1278c3d98dafe1c269049927c58ce /net/ipv6/udp.c | |
parent | a2746fb16e41b7c8f02aa4d2605ecce97abbebbd (diff) | |
parent | 3f8d6f2a0797e8c650a47e5c1b5c2601a46f4293 (diff) | |
download | linux-abaee091a18c19ccd86feb1c8374585d82e96777.tar.gz linux-abaee091a18c19ccd86feb1c8374585d82e96777.tar.xz |
Merge branch 'jejb-scsi' into misc
Diffstat (limited to 'net/ipv6/udp.c')
-rw-r--r-- | net/ipv6/udp.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/net/ipv6/udp.c b/net/ipv6/udp.c index 01bcb49619ee..9da3287a3923 100644 --- a/net/ipv6/udp.c +++ b/net/ipv6/udp.c @@ -1110,6 +1110,7 @@ int udpv6_sendmsg(struct sock *sk, struct msghdr *msg, size_t len) DECLARE_SOCKADDR(struct sockaddr_in6 *, sin6, msg->msg_name); struct in6_addr *daddr, *final_p, final; struct ipv6_txoptions *opt = NULL; + struct ipv6_txoptions *opt_to_free = NULL; struct ip6_flowlabel *flowlabel = NULL; struct flowi6 fl6; struct dst_entry *dst; @@ -1263,8 +1264,10 @@ do_udp_sendmsg: opt = NULL; connected = 0; } - if (!opt) - opt = np->opt; + if (!opt) { + opt = txopt_get(np); + opt_to_free = opt; + } if (flowlabel) opt = fl6_merge_options(&opt_space, flowlabel, opt); opt = ipv6_fixup_options(&opt_space, opt); @@ -1373,6 +1376,7 @@ release_dst: out: dst_release(dst); fl6_sock_release(flowlabel); + txopt_put(opt_to_free); if (!err) return len; /* |