|
@@ -1368,7 +1368,7 @@ static inline struct inode *SOCK_INODE(struct socket *socket)
|
|
|
* Functions for memory accounting
|
|
|
*/
|
|
|
int __sk_mem_schedule(struct sock *sk, int size, int kind);
|
|
|
-void __sk_mem_reclaim(struct sock *sk);
|
|
|
+void __sk_mem_reclaim(struct sock *sk, int amount);
|
|
|
|
|
|
#define SK_MEM_QUANTUM ((int)PAGE_SIZE)
|
|
|
#define SK_MEM_QUANTUM_SHIFT ilog2(SK_MEM_QUANTUM)
|
|
@@ -1409,7 +1409,7 @@ static inline void sk_mem_reclaim(struct sock *sk)
|
|
|
if (!sk_has_account(sk))
|
|
|
return;
|
|
|
if (sk->sk_forward_alloc >= SK_MEM_QUANTUM)
|
|
|
- __sk_mem_reclaim(sk);
|
|
|
+ __sk_mem_reclaim(sk, sk->sk_forward_alloc);
|
|
|
}
|
|
|
|
|
|
static inline void sk_mem_reclaim_partial(struct sock *sk)
|
|
@@ -1417,7 +1417,7 @@ static inline void sk_mem_reclaim_partial(struct sock *sk)
|
|
|
if (!sk_has_account(sk))
|
|
|
return;
|
|
|
if (sk->sk_forward_alloc > SK_MEM_QUANTUM)
|
|
|
- __sk_mem_reclaim(sk);
|
|
|
+ __sk_mem_reclaim(sk, sk->sk_forward_alloc - 1);
|
|
|
}
|
|
|
|
|
|
static inline void sk_mem_charge(struct sock *sk, int size)
|