]> git.proxmox.com Git - mirror_ubuntu-focal-kernel.git/commit
ethernet:enic: Fix a use after free bug in enic_hard_start_xmit
authorLv Yunlong <lyl2019@mail.ustc.edu.cn>
Sun, 2 May 2021 11:58:18 +0000 (04:58 -0700)
committerStefan Bader <stefan.bader@canonical.com>
Fri, 18 Jun 2021 13:02:14 +0000 (15:02 +0200)
commit088d4f87ba7b0edb888651f5206ea5664f67fec0
tree154fd3340f49453e9ae7d9fb9127f04c6f2244ef
parente4235e1d72cdf72584d706ca744c0afe76bb818d
ethernet:enic: Fix a use after free bug in enic_hard_start_xmit

BugLink: https://bugs.launchpad.net/bugs/1930474
[ Upstream commit 643001b47adc844ae33510c4bb93c236667008a3 ]

In enic_hard_start_xmit, it calls enic_queue_wq_skb(). Inside
enic_queue_wq_skb, if some error happens, the skb will be freed
by dev_kfree_skb(skb). But the freed skb is still used in
skb_tx_timestamp(skb).

My patch makes enic_queue_wq_skb() return error and goto spin_unlock()
incase of error. The solution is provided by Govind.
See https://lkml.org/lkml/2021/4/30/961.

Fixes: fb7516d42478e ("enic: add sw timestamp support")
Signed-off-by: Lv Yunlong <lyl2019@mail.ustc.edu.cn>
Acked-by: Govindarajulu Varadarajan <gvaradar@cisco.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
Signed-off-by: Kamal Mostafa <kamal@canonical.com>
Signed-off-by: Stefan Bader <stefan.bader@canonical.com>
drivers/net/ethernet/cisco/enic/enic_main.c