diff options
Diffstat (limited to 'net/core/skbuff.c')
| -rw-r--r-- | net/core/skbuff.c | 12 | 
1 files changed, 6 insertions, 6 deletions
diff --git a/net/core/skbuff.c b/net/core/skbuff.c index e89be6282693..47c1aa9ee045 100644 --- a/net/core/skbuff.c +++ b/net/core/skbuff.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0-or-later  /*   *	Routines having to do with the 'struct sk_buff' memory handlers.   * @@ -25,11 +26,6 @@   *	disabled, or you better be *real* sure that the operation is atomic   *	with respect to whatever list is being frobbed (e.g. via lock_sock()   *	or via disabling bottom half handlers, etc). - * - *	This program is free software; you can redistribute it and/or - *	modify it under the terms of the GNU General Public License - *	as published by the Free Software Foundation; either version - *	2 of the License, or (at your option) any later version.   */  /* @@ -1036,7 +1032,11 @@ struct ubuf_info *sock_zerocopy_realloc(struct sock *sk, size_t size,  			uarg->len++;  			uarg->bytelen = bytelen;  			atomic_set(&sk->sk_zckey, ++next); -			sock_zerocopy_get(uarg); + +			/* no extra ref when appending to datagram (MSG_MORE) */ +			if (sk->sk_type == SOCK_STREAM) +				sock_zerocopy_get(uarg); +  			return uarg;  		}  	}  | 
