mirror of
https://github.com/torvalds/linux.git
synced 2026-06-08 06:25:52 +02:00
liquidio: read sc->iq_no before release sc
[ Upstream commit c0f53771ba ]
The function lio_vf_rep_packet_sent_callback releases the occupation of
sc via octeon_free_soft_command. sc should not be used after that.
Unfortunately, sc->iq_no is read. To fix this, the patch stores sc->iq_no
into a local variable before releasing sc and then uses the local variable
instead of sc->iq_no.
Signed-off-by: Pan Bian <bianpan2016@163.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
85099bea97
commit
b0cf59188e
|
|
@ -367,13 +367,15 @@ lio_vf_rep_packet_sent_callback(struct octeon_device *oct,
|
|||
struct octeon_soft_command *sc = (struct octeon_soft_command *)buf;
|
||||
struct sk_buff *skb = sc->ctxptr;
|
||||
struct net_device *ndev = skb->dev;
|
||||
u32 iq_no;
|
||||
|
||||
dma_unmap_single(&oct->pci_dev->dev, sc->dmadptr,
|
||||
sc->datasize, DMA_TO_DEVICE);
|
||||
dev_kfree_skb_any(skb);
|
||||
iq_no = sc->iq_no;
|
||||
octeon_free_soft_command(oct, sc);
|
||||
|
||||
if (octnet_iq_is_full(oct, sc->iq_no))
|
||||
if (octnet_iq_is_full(oct, iq_no))
|
||||
return;
|
||||
|
||||
if (netif_queue_stopped(ndev))
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user