net/qede/base: add check to validate Tx queue
authorRasesh Mody <rasesh.mody@cavium.com>
Thu, 5 Jan 2017 07:03:49 +0000 (23:03 -0800)
committerFerruh Yigit <ferruh.yigit@intel.com>
Tue, 17 Jan 2017 18:40:52 +0000 (19:40 +0100)
Make sure VF tx_qid and the status block index is in the allocated range,
else fail the request.

Signed-off-by: Rasesh Mody <rasesh.mody@cavium.com>
drivers/net/qede/base/ecore_sriov.c

index afc1db3..bdf9164 100644 (file)
@@ -2099,26 +2099,26 @@ static void ecore_iov_vf_mbx_start_txq(struct ecore_hwfn *p_hwfn,
        pq_params.eth.is_vf = 1;
        pq_params.eth.vf_id = vf->relative_vf_id;
 
-       req = &mbx->req_virt->start_txq;
        OSAL_MEMSET(&p_params, 0, sizeof(p_params));
+       req = &mbx->req_virt->start_txq;
+
+       if (!ecore_iov_validate_txq(p_hwfn, vf, req->tx_qid) ||
+           !ecore_iov_validate_sb(p_hwfn, vf, req->hw_sb))
+               goto out;
+
        p_params.queue_id = (u8)vf->vf_queues[req->tx_qid].fw_tx_qid;
        p_params.vport_id = vf->vport_id;
        p_params.stats_id = vf->abs_vf_id + 0x10,
        p_params.sb = req->hw_sb;
        p_params.sb_idx = req->sb_index;
 
-       if (!ecore_iov_validate_txq(p_hwfn, vf, req->tx_qid) ||
-           !ecore_iov_validate_sb(p_hwfn, vf, req->hw_sb))
-               goto out;
-
-       rc = ecore_sp_eth_txq_start_ramrod(
-               p_hwfn,
-               vf->opaque_fid,
-               vf->vf_queues[req->tx_qid].fw_cid,
-               &p_params,
-               req->pbl_addr,
-               req->pbl_size,
-               &pq_params);
+       rc = ecore_sp_eth_txq_start_ramrod(p_hwfn,
+                                          vf->opaque_fid,
+                                          vf->vf_queues[req->tx_qid].fw_cid,
+                                          &p_params,
+                                          req->pbl_addr,
+                                          req->pbl_size,
+                                          &pq_params);
 
        if (rc)
                status = PFVF_STATUS_FAILURE;