aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/net/usb/cdc-phonet.c6
-rw-r--r--drivers/net/wireless/iwlegacy/3945.c3
-rw-r--r--drivers/net/wireless/iwlegacy/4965-mac.c3
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-agn-rx.c2
-rw-r--r--drivers/usb/gadget/f_phonet.c2
-rw-r--r--include/linux/skbuff.h2
-rw-r--r--net/core/skbuff.c4
7 files changed, 13 insertions, 9 deletions
diff --git a/drivers/net/usb/cdc-phonet.c b/drivers/net/usb/cdc-phonet.c
index 790cbdea7392..3886b30ed373 100644
--- a/drivers/net/usb/cdc-phonet.c
+++ b/drivers/net/usb/cdc-phonet.c
@@ -164,12 +164,14 @@ static void rx_complete(struct urb *req)
164 /* Can't use pskb_pull() on page in IRQ */ 164 /* Can't use pskb_pull() on page in IRQ */
165 memcpy(skb_put(skb, 1), page_address(page), 1); 165 memcpy(skb_put(skb, 1), page_address(page), 1);
166 skb_add_rx_frag(skb, skb_shinfo(skb)->nr_frags, 166 skb_add_rx_frag(skb, skb_shinfo(skb)->nr_frags,
167 page, 1, req->actual_length); 167 page, 1, req->actual_length,
168 req->actual_length);
168 page = NULL; 169 page = NULL;
169 } 170 }
170 } else { 171 } else {
171 skb_add_rx_frag(skb, skb_shinfo(skb)->nr_frags, 172 skb_add_rx_frag(skb, skb_shinfo(skb)->nr_frags,
172 page, 0, req->actual_length); 173 page, 0, req->actual_length,
174 req->actual_length);
173 page = NULL; 175 page = NULL;
174 } 176 }
175 if (req->actual_length < PAGE_SIZE) 177 if (req->actual_length < PAGE_SIZE)
diff --git a/drivers/net/wireless/iwlegacy/3945.c b/drivers/net/wireless/iwlegacy/3945.c
index c5b1d199e0bc..b25c01be0d90 100644
--- a/drivers/net/wireless/iwlegacy/3945.c
+++ b/drivers/net/wireless/iwlegacy/3945.c
@@ -499,7 +499,8 @@ il3945_pass_packet_to_mac80211(struct il_priv *il, struct il_rx_buf *rxb,
499 le32_to_cpu(rx_end->status), stats); 499 le32_to_cpu(rx_end->status), stats);
500 500
501 skb_add_rx_frag(skb, 0, rxb->page, 501 skb_add_rx_frag(skb, 0, rxb->page,
502 (void *)rx_hdr->payload - (void *)pkt, len); 502 (void *)rx_hdr->payload - (void *)pkt, len,
503 len);
503 504
504 il_update_stats(il, false, fc, len); 505 il_update_stats(il, false, fc, len);
505 memcpy(IEEE80211_SKB_RXCB(skb), stats, sizeof(*stats)); 506 memcpy(IEEE80211_SKB_RXCB(skb), stats, sizeof(*stats));
diff --git a/drivers/net/wireless/iwlegacy/4965-mac.c b/drivers/net/wireless/iwlegacy/4965-mac.c
index 7b54dbb338be..17f1c6853182 100644
--- a/drivers/net/wireless/iwlegacy/4965-mac.c
+++ b/drivers/net/wireless/iwlegacy/4965-mac.c
@@ -596,7 +596,8 @@ il4965_pass_packet_to_mac80211(struct il_priv *il, struct ieee80211_hdr *hdr,
596 return; 596 return;
597 } 597 }
598 598
599 skb_add_rx_frag(skb, 0, rxb->page, (void *)hdr - rxb_addr(rxb), len); 599 skb_add_rx_frag(skb, 0, rxb->page, (void *)hdr - rxb_addr(rxb), len,
600 len);
600 601
601 il_update_stats(il, false, fc, len); 602 il_update_stats(il, false, fc, len);
602 memcpy(IEEE80211_SKB_RXCB(skb), stats, sizeof(*stats)); 603 memcpy(IEEE80211_SKB_RXCB(skb), stats, sizeof(*stats));
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn-rx.c b/drivers/net/wireless/iwlwifi/iwl-agn-rx.c
index 44c6f712b77d..f4b84d1596e3 100644
--- a/drivers/net/wireless/iwlwifi/iwl-agn-rx.c
+++ b/drivers/net/wireless/iwlwifi/iwl-agn-rx.c
@@ -796,7 +796,7 @@ static void iwlagn_pass_packet_to_mac80211(struct iwl_priv *priv,
796 796
797 offset = (void *)hdr - rxb_addr(rxb); 797 offset = (void *)hdr - rxb_addr(rxb);
798 p = rxb_steal_page(rxb); 798 p = rxb_steal_page(rxb);
799 skb_add_rx_frag(skb, 0, p, offset, len); 799 skb_add_rx_frag(skb, 0, p, offset, len, len);
800 800
801 iwl_update_stats(priv, false, fc, len); 801 iwl_update_stats(priv, false, fc, len);
802 802
diff --git a/drivers/usb/gadget/f_phonet.c b/drivers/usb/gadget/f_phonet.c
index 7cdcb63b21ff..85a5cebe96b3 100644
--- a/drivers/usb/gadget/f_phonet.c
+++ b/drivers/usb/gadget/f_phonet.c
@@ -345,7 +345,7 @@ static void pn_rx_complete(struct usb_ep *ep, struct usb_request *req)
345 } 345 }
346 346
347 skb_add_rx_frag(skb, skb_shinfo(skb)->nr_frags, page, 347 skb_add_rx_frag(skb, skb_shinfo(skb)->nr_frags, page,
348 skb->len <= 1, req->actual); 348 skb->len <= 1, req->actual, req->actual);
349 page = NULL; 349 page = NULL;
350 350
351 if (req->actual < req->length) { /* Last fragment */ 351 if (req->actual < req->length) { /* Last fragment */
diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h
index a2b9953b582d..681a18799140 100644
--- a/include/linux/skbuff.h
+++ b/include/linux/skbuff.h
@@ -1244,7 +1244,7 @@ static inline void skb_fill_page_desc(struct sk_buff *skb, int i,
1244} 1244}
1245 1245
1246extern void skb_add_rx_frag(struct sk_buff *skb, int i, struct page *page, 1246extern void skb_add_rx_frag(struct sk_buff *skb, int i, struct page *page,
1247 int off, int size); 1247 int off, int size, unsigned int truesize);
1248 1248
1249#define SKB_PAGE_ASSERT(skb) BUG_ON(skb_shinfo(skb)->nr_frags) 1249#define SKB_PAGE_ASSERT(skb) BUG_ON(skb_shinfo(skb)->nr_frags)
1250#define SKB_FRAG_ASSERT(skb) BUG_ON(skb_has_frag_list(skb)) 1250#define SKB_FRAG_ASSERT(skb) BUG_ON(skb_has_frag_list(skb))
diff --git a/net/core/skbuff.c b/net/core/skbuff.c
index 6eb656acdfe5..a690cae91cdd 100644
--- a/net/core/skbuff.c
+++ b/net/core/skbuff.c
@@ -321,12 +321,12 @@ struct sk_buff *__netdev_alloc_skb(struct net_device *dev,
321EXPORT_SYMBOL(__netdev_alloc_skb); 321EXPORT_SYMBOL(__netdev_alloc_skb);
322 322
323void skb_add_rx_frag(struct sk_buff *skb, int i, struct page *page, int off, 323void skb_add_rx_frag(struct sk_buff *skb, int i, struct page *page, int off,
324 int size) 324 int size, unsigned int truesize)
325{ 325{
326 skb_fill_page_desc(skb, i, page, off, size); 326 skb_fill_page_desc(skb, i, page, off, size);
327 skb->len += size; 327 skb->len += size;
328 skb->data_len += size; 328 skb->data_len += size;
329 skb->truesize += size; 329 skb->truesize += truesize;
330} 330}
331EXPORT_SYMBOL(skb_add_rx_frag); 331EXPORT_SYMBOL(skb_add_rx_frag);
332 332