On Tue, 20 Oct 2015 16:37:41 +0100 Bernard Iremonger <bernard.iremonger at intel.com> wrote:
> if input parameter vq is NULL, hw = vq->hw, causes a segmentation fault. > > Signed-off-by: Bernard Iremonger <bernard.iremonger at intel.com> > --- > drivers/net/virtio/virtio_ethdev.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/drivers/net/virtio/virtio_ethdev.c > b/drivers/net/virtio/virtio_ethdev.c > index 465d3cd..147aca1 100644 > --- a/drivers/net/virtio/virtio_ethdev.c > +++ b/drivers/net/virtio/virtio_ethdev.c > @@ -239,9 +239,10 @@ virtio_set_multiple_queues(struct rte_eth_dev *dev, > uint16_t nb_queues) > > void > virtio_dev_queue_release(struct virtqueue *vq) { > - struct virtio_hw *hw = vq->hw; > + struct virtio_hw *hw; > > if (vq) { > + hw = vq->hw; > /* Select and deactivate the queue */ > VIRTIO_WRITE_REG_2(hw, VIRTIO_PCI_QUEUE_SEL, vq->queue_id); > VIRTIO_WRITE_REG_4(hw, VIRTIO_PCI_QUEUE_PFN, 0); This could only happen for the case of the control vq. Others are guaranteed to be non NULL by rte_ethdev. Acked-by: Stephen Hemminger <stephen at networkplumber.org>