diff options
Diffstat (limited to 'net/nfc/llcp_commands.c')
| -rw-r--r-- | net/nfc/llcp_commands.c | 9 | 
1 files changed, 6 insertions, 3 deletions
diff --git a/net/nfc/llcp_commands.c b/net/nfc/llcp_commands.c index 2ceefa183cee..6a196e438b6c 100644 --- a/net/nfc/llcp_commands.c +++ b/net/nfc/llcp_commands.c @@ -752,11 +752,14 @@ int nfc_llcp_send_ui_frame(struct nfc_llcp_sock *sock, u8 ssap, u8 dsap,  		pr_debug("Fragment %zd bytes remaining %zd",  			 frag_len, remaining_len); -		pdu = nfc_alloc_send_skb(sock->dev, &sock->sk, MSG_DONTWAIT, +		pdu = nfc_alloc_send_skb(sock->dev, &sock->sk, 0,  					 frag_len + LLCP_HEADER_SIZE, &err);  		if (pdu == NULL) { -			pr_err("Could not allocate PDU\n"); -			continue; +			pr_err("Could not allocate PDU (error=%d)\n", err); +			len -= remaining_len; +			if (len == 0) +				len = err; +			break;  		}  		pdu = llcp_add_header(pdu, dsap, ssap, LLCP_PDU_UI);  |