]> git.baikalelectronics.ru Git - kernel.git/commit
net: ll_temac: Make sure to free skb when it is completely used
authorEsben Haabendal <esben@geanix.com>
Fri, 18 Jun 2021 10:52:23 +0000 (12:52 +0200)
committerDavid S. Miller <davem@davemloft.net>
Fri, 18 Jun 2021 19:11:51 +0000 (12:11 -0700)
commit5bd78bc331be6bc78b82925cacff07c04fed2cb9
treea73911fda2e5ef338a8ec176f92b953aeededd6d
parent94a8b9ba8f2427bb796a544ec6762622be04e4c5
net: ll_temac: Make sure to free skb when it is completely used

With the skb pointer piggy-backed on the TX BD, we have a simple and
efficient way to free the skb buffer when the frame has been transmitted.
But in order to avoid freeing the skb while there are still fragments from
the skb in use, we need to piggy-back on the TX BD of the skb, not the
first.

Without this, we are doing use-after-free on the DMA side, when the first
BD of a multi TX BD packet is seen as completed in xmit_done, and the
remaining BDs are still being processed.

Cc: stable@vger.kernel.org # v5.4+
Signed-off-by: Esben Haabendal <esben@geanix.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/xilinx/ll_temac_main.c