|
@@ -2296,7 +2296,7 @@ void __tcp_push_pending_frames(struct sock *sk, unsigned int cur_mss,
|
|
|
return;
|
|
|
|
|
|
if (tcp_write_xmit(sk, cur_mss, nonagle, 0,
|
|
|
- sk_gfp_atomic(sk, GFP_ATOMIC)))
|
|
|
+ sk_gfp_mask(sk, GFP_ATOMIC)))
|
|
|
tcp_check_probe_timer(sk);
|
|
|
}
|
|
|
|
|
@@ -3352,8 +3352,9 @@ void tcp_send_ack(struct sock *sk)
|
|
|
* tcp_transmit_skb() will set the ownership to this
|
|
|
* sock.
|
|
|
*/
|
|
|
- buff = alloc_skb(MAX_TCP_HEADER, sk_gfp_atomic(sk, GFP_ATOMIC));
|
|
|
- if (!buff) {
|
|
|
+ buff = alloc_skb(MAX_TCP_HEADER,
|
|
|
+ sk_gfp_mask(sk, GFP_ATOMIC | __GFP_NOWARN));
|
|
|
+ if (unlikely(!buff)) {
|
|
|
inet_csk_schedule_ack(sk);
|
|
|
inet_csk(sk)->icsk_ack.ato = TCP_ATO_MIN;
|
|
|
inet_csk_reset_xmit_timer(sk, ICSK_TIME_DACK,
|
|
@@ -3375,7 +3376,7 @@ void tcp_send_ack(struct sock *sk)
|
|
|
|
|
|
/* Send it off, this clears delayed acks for us. */
|
|
|
skb_mstamp_get(&buff->skb_mstamp);
|
|
|
- tcp_transmit_skb(sk, buff, 0, sk_gfp_atomic(sk, GFP_ATOMIC));
|
|
|
+ tcp_transmit_skb(sk, buff, 0, (__force gfp_t)0);
|
|
|
}
|
|
|
EXPORT_SYMBOL_GPL(tcp_send_ack);
|
|
|
|
|
@@ -3396,7 +3397,8 @@ static int tcp_xmit_probe_skb(struct sock *sk, int urgent, int mib)
|
|
|
struct sk_buff *skb;
|
|
|
|
|
|
/* We don't queue it, tcp_transmit_skb() sets ownership. */
|
|
|
- skb = alloc_skb(MAX_TCP_HEADER, sk_gfp_atomic(sk, GFP_ATOMIC));
|
|
|
+ skb = alloc_skb(MAX_TCP_HEADER,
|
|
|
+ sk_gfp_mask(sk, GFP_ATOMIC | __GFP_NOWARN));
|
|
|
if (!skb)
|
|
|
return -1;
|
|
|
|
|
@@ -3409,7 +3411,7 @@ static int tcp_xmit_probe_skb(struct sock *sk, int urgent, int mib)
|
|
|
tcp_init_nondata_skb(skb, tp->snd_una - !urgent, TCPHDR_ACK);
|
|
|
skb_mstamp_get(&skb->skb_mstamp);
|
|
|
NET_INC_STATS(sock_net(sk), mib);
|
|
|
- return tcp_transmit_skb(sk, skb, 0, GFP_ATOMIC);
|
|
|
+ return tcp_transmit_skb(sk, skb, 0, (__force gfp_t)0);
|
|
|
}
|
|
|
|
|
|
void tcp_send_window_probe(struct sock *sk)
|