diff --git a/drivers/net/r8169.c b/drivers/net/r8169.c
index 1f7fb541ec54ef3bb605d352fda2901d33523dc1..e4827a414689fba92e22b808c4b89fe9d6488987 100644
--- a/drivers/net/r8169.c
+++ b/drivers/net/r8169.c
@@ -2495,7 +2495,7 @@ static inline int rtl8169_try_rx_copy(struct sk_buff **sk_buff, int pkt_size,
 		skb = dev_alloc_skb(pkt_size + align);
 		if (skb) {
 			skb_reserve(skb, (align - 1) & (unsigned long)skb->data);
-			eth_copy_and_sum(skb, sk_buff[0]->data, pkt_size, 0);
+			skb_copy_from_linear_data(*sk_buff, skb->data, pkt_size);
 			*sk_buff = skb;
 			rtl8169_mark_to_asic(desc, rx_buf_sz);
 			ret = 0;