diff options
Diffstat (limited to 'net/ipv4/ip_output.c')
| -rw-r--r-- | net/ipv4/ip_output.c | 4 | 
1 files changed, 2 insertions, 2 deletions
diff --git a/net/ipv4/ip_output.c b/net/ipv4/ip_output.c index bfd0ca554977..8c9189a41b13 100644 --- a/net/ipv4/ip_output.c +++ b/net/ipv4/ip_output.c @@ -878,7 +878,7 @@ static int __ip_append_data(struct sock *sk,  	int csummode = CHECKSUM_NONE;  	struct rtable *rt = (struct rtable *)cork->dst;  	unsigned int wmem_alloc_delta = 0; -	bool paged, extra_uref; +	bool paged, extra_uref = false;  	u32 tskey = 0;  	skb = skb_peek_tail(queue); @@ -918,7 +918,7 @@ static int __ip_append_data(struct sock *sk,  		uarg = sock_zerocopy_realloc(sk, length, skb_zcopy(skb));  		if (!uarg)  			return -ENOBUFS; -		extra_uref = true; +		extra_uref = !skb;	/* only extra ref if !MSG_MORE */  		if (rt->dst.dev->features & NETIF_F_SG &&  		    csummode == CHECKSUM_PARTIAL) {  			paged = true;  | 
