ravb: Fix use-after-free ravb_tstamp_skb
authorTho Vu <tho.vu.wh@rvc.renesas.com>
Fri, 16 Aug 2019 15:17:02 +0000 (17:17 +0200)
committerDavid S. Miller <davem@davemloft.net>
Sun, 18 Aug 2019 21:19:14 +0000 (14:19 -0700)
commitcfef46d692efd852a0da6803f920cc756eea2855
treef3ad1784d32745cfc43bba49b78b46b88f6a674d
parent5cbe9102ae2398c0f410fd4f832d9f038e751a29
ravb: Fix use-after-free ravb_tstamp_skb

When a Tx timestamp is requested, a pointer to the skb is stored in the
ravb_tstamp_skb struct. This was done without an skb_get. There exists
the possibility that the skb could be freed by ravb_tx_free (when
ravb_tx_free is called from ravb_start_xmit) before the timestamp was
processed, leading to a use-after-free bug.

Use skb_get when filling a ravb_tstamp_skb struct, and add appropriate
frees/consumes when a ravb_tstamp_skb struct is freed.

Fixes: c156633f1353 ("Renesas Ethernet AVB driver proper")
Signed-off-by: Tho Vu <tho.vu.wh@rvc.renesas.com>
Signed-off-by: Kazuya Mizuguchi <kazuya.mizuguchi.ks@renesas.com>
Signed-off-by: Simon Horman <horms+renesas@verge.net.au>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/renesas/ravb_main.c