Revert to Fedora kernel-2.6.17-1.2187_FC5 patched with vs2.0.2.1; there are too many...
[linux-2.6.git] / net / core / stream.c
index d1d7dec..e948969 100644 (file)
@@ -196,13 +196,15 @@ EXPORT_SYMBOL(sk_stream_error);
 
 void __sk_stream_mem_reclaim(struct sock *sk)
 {
-       atomic_sub(sk->sk_forward_alloc / SK_STREAM_MEM_QUANTUM,
-                  sk->sk_prot->memory_allocated);
-       sk->sk_forward_alloc &= SK_STREAM_MEM_QUANTUM - 1;
-       if (*sk->sk_prot->memory_pressure &&
-           (atomic_read(sk->sk_prot->memory_allocated) <
-            sk->sk_prot->sysctl_mem[0]))
-               *sk->sk_prot->memory_pressure = 0;
+       if (sk->sk_forward_alloc >= SK_STREAM_MEM_QUANTUM) {
+               atomic_sub(sk->sk_forward_alloc / SK_STREAM_MEM_QUANTUM,
+                          sk->sk_prot->memory_allocated);
+               sk->sk_forward_alloc &= SK_STREAM_MEM_QUANTUM - 1;
+               if (*sk->sk_prot->memory_pressure &&
+                   (atomic_read(sk->sk_prot->memory_allocated) <
+                    sk->sk_prot->sysctl_mem[0]))
+                       *sk->sk_prot->memory_pressure = 0;
+       }
 }
 
 EXPORT_SYMBOL(__sk_stream_mem_reclaim);