|
@@ -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);
|