num_max_q = max(max_q->max_txq, max_q->max_rxq);
        vport->q_vector_idxs = kcalloc(num_max_q, sizeof(u16), GFP_KERNEL);
-       if (!vport->q_vector_idxs) {
-               kfree(vport);
+       if (!vport->q_vector_idxs)
+               goto free_vport;
 
-               return NULL;
-       }
        idpf_vport_init(vport, max_q);
 
        /* This alloc is done separate from the LUT because it's not strictly
         */
        rss_data = &adapter->vport_config[idx]->user_config.rss_data;
        rss_data->rss_key = kzalloc(rss_data->rss_key_size, GFP_KERNEL);
-       if (!rss_data->rss_key) {
-               kfree(vport);
+       if (!rss_data->rss_key)
+               goto free_vector_idxs;
 
-               return NULL;
-       }
        /* Initialize default rss key */
        netdev_rss_key_fill((void *)rss_data->rss_key, rss_data->rss_key_size);
 
        adapter->next_vport = idpf_get_free_slot(adapter);
 
        return vport;
+
+free_vector_idxs:
+       kfree(vport->q_vector_idxs);
+free_vport:
+       kfree(vport);
+
+       return NULL;
 }
 
 /**