diff options
Diffstat (limited to 'dpdk/dpdk-16.04_patches/0021-net-enic-fix-crash-when-releasing-queues.patch')
-rw-r--r-- | dpdk/dpdk-16.04_patches/0021-net-enic-fix-crash-when-releasing-queues.patch | 61 |
1 files changed, 0 insertions, 61 deletions
diff --git a/dpdk/dpdk-16.04_patches/0021-net-enic-fix-crash-when-releasing-queues.patch b/dpdk/dpdk-16.04_patches/0021-net-enic-fix-crash-when-releasing-queues.patch deleted file mode 100644 index 56d2c677e1b..00000000000 --- a/dpdk/dpdk-16.04_patches/0021-net-enic-fix-crash-when-releasing-queues.patch +++ /dev/null @@ -1,61 +0,0 @@ -From 38e154305ee5fd2ee454c19218ca144ffd1535f1 Mon Sep 17 00:00:00 2001 -From: John Daley <johndale@cisco.com> -Date: Sat, 11 Jun 2016 10:27:04 -0700 -Subject: [PATCH 21/25] net/enic: fix crash when releasing queues - -If device configuration failed due to a lack of resources, such as -if more queues are requested than are available, the queue release -functions are called with NULL pointers which were being dereferenced. - -Skip releasing queues if they are NULL pointers. - -Fixes: fefed3d1e62c ("enic: new driver") - -Signed-off-by: John Daley <johndale@cisco.com> ---- - drivers/net/enic/enic_main.c | 21 ++++++++++++++++----- - 1 file changed, 16 insertions(+), 5 deletions(-) - -diff --git a/drivers/net/enic/enic_main.c b/drivers/net/enic/enic_main.c -index 56ec96e..4e5594f 100644 ---- a/drivers/net/enic/enic_main.c -+++ b/drivers/net/enic/enic_main.c -@@ -462,9 +462,15 @@ int enic_alloc_intr_resources(struct enic *enic) - - void enic_free_rq(void *rxq) - { -- struct vnic_rq *rq_sop = (struct vnic_rq *)rxq; -- struct enic *enic = vnic_dev_priv(rq_sop->vdev); -- struct vnic_rq *rq_data = &enic->rq[rq_sop->data_queue_idx]; -+ struct vnic_rq *rq_sop, *rq_data; -+ struct enic *enic; -+ -+ if (rxq == NULL) -+ return; -+ -+ rq_sop = (struct vnic_rq *)rxq; -+ enic = vnic_dev_priv(rq_sop->vdev); -+ rq_data = &enic->rq[rq_sop->data_queue_idx]; - - enic_rxmbuf_queue_release(enic, rq_sop); - if (rq_data->in_use) -@@ -657,9 +663,14 @@ err_exit: - - void enic_free_wq(void *txq) - { -- struct vnic_wq *wq = (struct vnic_wq *)txq; -- struct enic *enic = vnic_dev_priv(wq->vdev); -+ struct vnic_wq *wq; -+ struct enic *enic; -+ -+ if (txq == NULL) -+ return; - -+ wq = (struct vnic_wq *)txq; -+ enic = vnic_dev_priv(wq->vdev); - rte_memzone_free(wq->cqmsg_rz); - vnic_wq_free(wq); - vnic_cq_free(&enic->cq[enic->rq_count + wq->index]); --- -2.7.0 - |