*/
 static int igc_request_msix(struct igc_adapter *adapter)
 {
+       unsigned int num_q_vectors = adapter->num_q_vectors;
        int i = 0, err = 0, vector = 0, free_vector = 0;
        struct net_device *netdev = adapter->netdev;
 
        if (err)
                goto err_out;
 
-       for (i = 0; i < adapter->num_q_vectors; i++) {
+       if (num_q_vectors > MAX_Q_VECTORS) {
+               num_q_vectors = MAX_Q_VECTORS;
+               dev_warn(&adapter->pdev->dev,
+                        "The number of queue vectors (%d) is higher than max allowed (%d)\n",
+                        adapter->num_q_vectors, MAX_Q_VECTORS);
+       }
+       for (i = 0; i < num_q_vectors; i++) {
                struct igc_q_vector *q_vector = adapter->q_vector[i];
 
                vector++;