Since build_skb accesses the data area (for initializing shinfo), dma unmap
needs to happen before that call
Signed-off-by: Felix Fietkau <nbd@nbd.name>
[Ilya: split build_skb cleanup fix into a separate commit]
Signed-off-by: Ilya Lipnitskiy <ilya.lipnitskiy@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
                        goto release_desc;
                }
 
+               dma_unmap_single(eth->dev, trxd.rxd1,
+                                ring->buf_size, DMA_FROM_DEVICE);
+
                /* receive data */
                skb = build_skb(data, ring->frag_size);
                if (unlikely(!skb)) {
                }
                skb_reserve(skb, NET_SKB_PAD + NET_IP_ALIGN);
 
-               dma_unmap_single(eth->dev, trxd.rxd1,
-                                ring->buf_size, DMA_FROM_DEVICE);
                pktlen = RX_DMA_GET_PLEN0(trxd.rxd2);
                skb->dev = netdev;
                skb_put(skb, pktlen);