History

Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6

* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6: net/ipv4: Eliminate kstrdup memory leak net/caif/cfrfml.c: use asm/unaligned.h ax25: missplaced sock_put(sk) qlge: reset the chip before freeing the buffers l2tp: test for ethernet header in l2tp_eth_dev_recv() tcp: select(writefds) don't hang up when a peer close connection tcp: fix three tcp sysctls tuning tcp: Combat per-cpu skew in orphan tests. pxa168_eth: silence gcc warnings pxa168_eth: update call to phy_mii_ioctl() pxa168_eth: fix error handling in prope pxa168_eth: remove unneeded null check phylib: Fix race between returning phydev and calling adjust_link caif-driver: add HAS_DMA dependency 3c59x: Fix deadlock between boomerang_interrupt and boomerang_start_tx qlcnic: fix poll implementation netxen: fix poll implementation bridge: netfilter: fix a memory leak

Linus Torvalds committed 16 years ago

Commit 29cfcdd2 parents 303fd2c c34186e15 files · +98 −72Browse files

Showing the changes to include (1 of 15 files). Show all

Unified · Split

include/net/tcp.h+14−4
@@ -268,11 +268,21 @@ static inline int between(__u32 seq1, __u32 seq2, __u32 seq3) · 267 unmodified lines
268268 return seq3 - seq2 >= seq1 - seq2;
269269 }
270270
271−static inline int tcp_too_many_orphans(struct sock *sk, int num)
271+static inline bool tcp_too_many_orphans(struct sock *sk, int shift)
272272 {
273− return (num > sysctl_tcp_max_orphans) ||
274− (sk->sk_wmem_queued > SOCK_MIN_SNDBUF &&
275− atomic_read(&tcp_memory_allocated) > sysctl_tcp_mem[2]);
273+ struct percpu_counter *ocp = sk->sk_prot->orphan_count;
274+ int orphans = percpu_counter_read_positive(ocp);
275+
276+ if (orphans << shift > sysctl_tcp_max_orphans) {
277+ orphans = percpu_counter_sum_positive(ocp);
278+ if (orphans << shift > sysctl_tcp_max_orphans)
279+ return true;
280+ }
281+
282+ if (sk->sk_wmem_queued > SOCK_MIN_SNDBUF &&
283+ atomic_read(&tcp_memory_allocated) > sysctl_tcp_mem[2])
284+ return true;
285+ return false;
276286 }
277287
278288 /* syncookies: remember time of last synqueue overflow */