diff options
Diffstat (limited to 'net')
| -rw-r--r-- | net/core/fib_rules.c | 2 | ||||
| -rw-r--r-- | net/ipv4/tcp_output.c | 3 | ||||
| -rw-r--r-- | net/ipv6/raw.c | 4 | ||||
| -rw-r--r-- | net/ipv6/udp.c | 2 | ||||
| -rw-r--r-- | net/sched/cls_basic.c | 1 |
5 files changed, 8 insertions, 4 deletions
diff --git a/net/core/fib_rules.c b/net/core/fib_rules.c index d011819a8058..7174ced75efc 100644 --- a/net/core/fib_rules.c +++ b/net/core/fib_rules.c | |||
| @@ -143,7 +143,7 @@ int fib_rules_lookup(struct fib_rules_ops *ops, struct flowi *fl, | |||
| 143 | } | 143 | } |
| 144 | } | 144 | } |
| 145 | 145 | ||
| 146 | err = -ENETUNREACH; | 146 | err = -ESRCH; |
| 147 | out: | 147 | out: |
| 148 | rcu_read_unlock(); | 148 | rcu_read_unlock(); |
| 149 | 149 | ||
diff --git a/net/ipv4/tcp_output.c b/net/ipv4/tcp_output.c index dc151139b5af..688b95594f2e 100644 --- a/net/ipv4/tcp_output.c +++ b/net/ipv4/tcp_output.c | |||
| @@ -1607,6 +1607,9 @@ u32 __tcp_select_window(struct sock *sk) | |||
| 1607 | */ | 1607 | */ |
| 1608 | if (window <= free_space - mss || window > free_space) | 1608 | if (window <= free_space - mss || window > free_space) |
| 1609 | window = (free_space/mss)*mss; | 1609 | window = (free_space/mss)*mss; |
| 1610 | else if (mss == full_space && | ||
| 1611 | free_space > window + full_space/2) | ||
| 1612 | window = free_space; | ||
| 1610 | } | 1613 | } |
| 1611 | 1614 | ||
| 1612 | return window; | 1615 | return window; |
diff --git a/net/ipv6/raw.c b/net/ipv6/raw.c index 306d5d83c068..203e069e7fe9 100644 --- a/net/ipv6/raw.c +++ b/net/ipv6/raw.c | |||
| @@ -687,9 +687,9 @@ static int rawv6_sendmsg(struct kiocb *iocb, struct sock *sk, | |||
| 687 | int err; | 687 | int err; |
| 688 | 688 | ||
| 689 | /* Rough check on arithmetic overflow, | 689 | /* Rough check on arithmetic overflow, |
| 690 | better check is made in ip6_build_xmit | 690 | better check is made in ip6_append_data(). |
| 691 | */ | 691 | */ |
| 692 | if (len < 0) | 692 | if (len > INT_MAX) |
| 693 | return -EMSGSIZE; | 693 | return -EMSGSIZE; |
| 694 | 694 | ||
| 695 | /* Mirror BSD error message compatibility */ | 695 | /* Mirror BSD error message compatibility */ |
diff --git a/net/ipv6/udp.c b/net/ipv6/udp.c index 0ad471909881..f590db57a7c9 100644 --- a/net/ipv6/udp.c +++ b/net/ipv6/udp.c | |||
| @@ -615,7 +615,7 @@ do_udp_sendmsg: | |||
| 615 | return udp_sendmsg(iocb, sk, msg, len); | 615 | return udp_sendmsg(iocb, sk, msg, len); |
| 616 | 616 | ||
| 617 | /* Rough check on arithmetic overflow, | 617 | /* Rough check on arithmetic overflow, |
| 618 | better check is made in ip6_build_xmit | 618 | better check is made in ip6_append_data(). |
| 619 | */ | 619 | */ |
| 620 | if (len > INT_MAX - sizeof(struct udphdr)) | 620 | if (len > INT_MAX - sizeof(struct udphdr)) |
| 621 | return -EMSGSIZE; | 621 | return -EMSGSIZE; |
diff --git a/net/sched/cls_basic.c b/net/sched/cls_basic.c index 70fe36eb66a2..4a91f082a81d 100644 --- a/net/sched/cls_basic.c +++ b/net/sched/cls_basic.c | |||
| @@ -109,6 +109,7 @@ static void basic_destroy(struct tcf_proto *tp) | |||
| 109 | list_del(&f->link); | 109 | list_del(&f->link); |
| 110 | basic_delete_filter(tp, f); | 110 | basic_delete_filter(tp, f); |
| 111 | } | 111 | } |
| 112 | kfree(head); | ||
| 112 | } | 113 | } |
| 113 | 114 | ||
| 114 | static int basic_delete(struct tcf_proto *tp, unsigned long arg) | 115 | static int basic_delete(struct tcf_proto *tp, unsigned long arg) |
