diff --git a/net/qrtr/qrtr.c b/net/qrtr/qrtr.c index 54f2d331d212..f17950996519 100644 --- a/net/qrtr/qrtr.c +++ b/net/qrtr/qrtr.c @@ -706,15 +706,20 @@ EXPORT_SYMBOL(qrtr_peek_pkt_size); static void qrtr_alloc_backup(struct work_struct *work) { struct sk_buff *skb; + int errcode; while (skb_queue_len(&qrtr_backup_lo) < QRTR_BACKUP_LO_NUM) { - skb = alloc_skb(QRTR_BACKUP_LO_SIZE, GFP_KERNEL); + skb = alloc_skb_with_frags(sizeof(struct qrtr_hdr_v1), + QRTR_BACKUP_LO_SIZE, 0, &errcode, + GFP_KERNEL); if (!skb) break; skb_queue_tail(&qrtr_backup_lo, skb); } while (skb_queue_len(&qrtr_backup_hi) < QRTR_BACKUP_HI_NUM) { - skb = alloc_skb(QRTR_BACKUP_HI_SIZE, GFP_KERNEL); + skb = alloc_skb_with_frags(sizeof(struct qrtr_hdr_v1), + QRTR_BACKUP_HI_SIZE, 0, &errcode, + GFP_KERNEL); if (!skb) break; skb_queue_tail(&qrtr_backup_hi, skb);