Message ID | 1445355462-16521-1-git-send-email-bernard.iremonger@intel.com |
---|---|
State | Accepted, archived |
Headers | show |
On Tue, 20 Oct 2015 16:37:41 +0100 Bernard Iremonger <bernard.iremonger@intel.com> wrote: > if input parameter vq is NULL, hw = vq->hw, causes a segmentation fault. > > Signed-off-by: Bernard Iremonger <bernard.iremonger@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@networkplumber.org>
2015-10-20 11:44, Stephen Hemminger: > On Tue, 20 Oct 2015 16:37:41 +0100 > Bernard Iremonger <bernard.iremonger@intel.com> wrote: > > > if input parameter vq is NULL, hw = vq->hw, causes a segmentation fault. > > > > Signed-off-by: Bernard Iremonger <bernard.iremonger@intel.com> > > 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@networkplumber.org> Applied and merged with doc patch, thanks
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);
if input parameter vq is NULL, hw = vq->hw, causes a segmentation fault. Signed-off-by: Bernard Iremonger <bernard.iremonger@intel.com> --- drivers/net/virtio/virtio_ethdev.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)