diff options
author | David S. Miller <davem@davemloft.net> | 2016-01-06 22:54:18 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2016-01-06 22:54:18 -0500 |
commit | 9e0efaf6b41bf22c2eb81258fc2a6f1538a643e5 (patch) | |
tree | e2daa5fb47f707f44b6b7e9da82a6d8017af3f8c /net/ipv4 | |
parent | c7f5d105495a38ed09e70d825f75d9d7d5407264 (diff) | |
parent | 51cb67c0b0fcb91581b15bd2e85f29af4d4b2df6 (diff) |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Diffstat (limited to 'net/ipv4')
-rw-r--r-- | net/ipv4/raw.c | 7 | ||||
-rw-r--r-- | net/ipv4/tcp_input.c | 3 | ||||
-rw-r--r-- | net/ipv4/udp.c | 7 |
3 files changed, 13 insertions, 4 deletions
diff --git a/net/ipv4/raw.c b/net/ipv4/raw.c index 63e5be0abd86..bc35f1842512 100644 --- a/net/ipv4/raw.c +++ b/net/ipv4/raw.c | |||
@@ -601,8 +601,11 @@ static int raw_sendmsg(struct sock *sk, struct msghdr *msg, size_t len) | |||
601 | (inet->hdrincl ? FLOWI_FLAG_KNOWN_NH : 0), | 601 | (inet->hdrincl ? FLOWI_FLAG_KNOWN_NH : 0), |
602 | daddr, saddr, 0, 0); | 602 | daddr, saddr, 0, 0); |
603 | 603 | ||
604 | if (!saddr && ipc.oif) | 604 | if (!saddr && ipc.oif) { |
605 | l3mdev_get_saddr(net, ipc.oif, &fl4); | 605 | err = l3mdev_get_saddr(net, ipc.oif, &fl4); |
606 | if (err < 0) | ||
607 | goto done; | ||
608 | } | ||
606 | 609 | ||
607 | if (!inet->hdrincl) { | 610 | if (!inet->hdrincl) { |
608 | rfv.msg = msg; | 611 | rfv.msg = msg; |
diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c index 7b1fddc47019..0003d409fec5 100644 --- a/net/ipv4/tcp_input.c +++ b/net/ipv4/tcp_input.c | |||
@@ -2478,6 +2478,9 @@ static void tcp_cwnd_reduction(struct sock *sk, const int prior_unsacked, | |||
2478 | int newly_acked_sacked = prior_unsacked - | 2478 | int newly_acked_sacked = prior_unsacked - |
2479 | (tp->packets_out - tp->sacked_out); | 2479 | (tp->packets_out - tp->sacked_out); |
2480 | 2480 | ||
2481 | if (newly_acked_sacked <= 0 || WARN_ON_ONCE(!tp->prior_cwnd)) | ||
2482 | return; | ||
2483 | |||
2481 | tp->prr_delivered += newly_acked_sacked; | 2484 | tp->prr_delivered += newly_acked_sacked; |
2482 | if (delta < 0) { | 2485 | if (delta < 0) { |
2483 | u64 dividend = (u64)tp->snd_ssthresh * tp->prr_delivered + | 2486 | u64 dividend = (u64)tp->snd_ssthresh * tp->prr_delivered + |
diff --git a/net/ipv4/udp.c b/net/ipv4/udp.c index 3a66731e3af6..dc45b538e237 100644 --- a/net/ipv4/udp.c +++ b/net/ipv4/udp.c | |||
@@ -1097,8 +1097,11 @@ int udp_sendmsg(struct sock *sk, struct msghdr *msg, size_t len) | |||
1097 | flow_flags, | 1097 | flow_flags, |
1098 | faddr, saddr, dport, inet->inet_sport); | 1098 | faddr, saddr, dport, inet->inet_sport); |
1099 | 1099 | ||
1100 | if (!saddr && ipc.oif) | 1100 | if (!saddr && ipc.oif) { |
1101 | l3mdev_get_saddr(net, ipc.oif, fl4); | 1101 | err = l3mdev_get_saddr(net, ipc.oif, fl4); |
1102 | if (err < 0) | ||
1103 | goto out; | ||
1104 | } | ||
1102 | 1105 | ||
1103 | security_sk_classify_flow(sk, flowi4_to_flowi(fl4)); | 1106 | security_sk_classify_flow(sk, flowi4_to_flowi(fl4)); |
1104 | rt = ip_route_output_flow(net, fl4, sk); | 1107 | rt = ip_route_output_flow(net, fl4, sk); |