mirror of
https://github.com/Fishwaldo/linux-bl808.git
synced 2025-06-17 20:25:19 +00:00
net: introduce sk_gfp_atomic() to allow addition of GFP flags depending on the individual socket
Introduce sk_gfp_atomic(), this function allows to inject sock specific flags to each sock related allocation. It is only used on allocation paths that may be required for writing pages back to network storage. [davem@davemloft.net: Use sk_gfp_atomic only when necessary] Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl> Signed-off-by: Mel Gorman <mgorman@suse.de> Acked-by: David S. Miller <davem@davemloft.net> Cc: Neil Brown <neilb@suse.de> Cc: Mike Christie <michaelc@cs.wisc.edu> Cc: Eric B Munson <emunson@mgebm.net> Cc: Eric Dumazet <eric.dumazet@gmail.com> Cc: Sebastian Andrzej Siewior <sebastian@breakpoint.cc> Cc: Mel Gorman <mgorman@suse.de> Cc: Christoph Lameter <cl@linux.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
183f6371aa
commit
99a1dec70d
3 changed files with 17 additions and 8 deletions
|
@ -1299,7 +1299,8 @@ static struct sock * tcp_v6_syn_recv_sock(struct sock *sk, struct sk_buff *skb,
|
|||
/* Clone pktoptions received with SYN */
|
||||
newnp->pktoptions = NULL;
|
||||
if (treq->pktopts != NULL) {
|
||||
newnp->pktoptions = skb_clone(treq->pktopts, GFP_ATOMIC);
|
||||
newnp->pktoptions = skb_clone(treq->pktopts,
|
||||
sk_gfp_atomic(sk, GFP_ATOMIC));
|
||||
consume_skb(treq->pktopts);
|
||||
treq->pktopts = NULL;
|
||||
if (newnp->pktoptions)
|
||||
|
@ -1349,7 +1350,8 @@ static struct sock * tcp_v6_syn_recv_sock(struct sock *sk, struct sk_buff *skb,
|
|||
* across. Shucks.
|
||||
*/
|
||||
tcp_md5_do_add(newsk, (union tcp_md5_addr *)&newnp->daddr,
|
||||
AF_INET6, key->key, key->keylen, GFP_ATOMIC);
|
||||
AF_INET6, key->key, key->keylen,
|
||||
sk_gfp_atomic(sk, GFP_ATOMIC));
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -1442,7 +1444,7 @@ static int tcp_v6_do_rcv(struct sock *sk, struct sk_buff *skb)
|
|||
--ANK (980728)
|
||||
*/
|
||||
if (np->rxopt.all)
|
||||
opt_skb = skb_clone(skb, GFP_ATOMIC);
|
||||
opt_skb = skb_clone(skb, sk_gfp_atomic(sk, GFP_ATOMIC));
|
||||
|
||||
if (sk->sk_state == TCP_ESTABLISHED) { /* Fast path */
|
||||
sock_rps_save_rxhash(sk, skb);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue