enum mlx4_steer_type steer,
                                              u32 qpn)
 {
-       struct mlx4_steer *s_steer = &mlx4_priv(dev)->steer[port - 1];
+       struct mlx4_steer *s_steer;
        struct mlx4_promisc_qp *pqp;
 
+       if (port < 1 || port > dev->caps.num_ports)
+               return NULL;
+
+       s_steer = &mlx4_priv(dev)->steer[port - 1];
+
        list_for_each_entry(pqp, &s_steer->promisc_qps[steer], list) {
                if (pqp->qpn == qpn)
                        return pqp;
        u32 prot;
        int err;
 
+       if (port < 1 || port > dev->caps.num_ports)
+               return -EINVAL;
+
        s_steer = &mlx4_priv(dev)->steer[port - 1];
        new_entry = kzalloc(sizeof *new_entry, GFP_KERNEL);
        if (!new_entry)
        struct mlx4_promisc_qp *pqp;
        struct mlx4_promisc_qp *dqp;
 
+       if (port < 1 || port > dev->caps.num_ports)
+               return -EINVAL;
+
        s_steer = &mlx4_priv(dev)->steer[port - 1];
 
        pqp = get_promisc_qp(dev, port, steer, qpn);
        struct mlx4_steer_index *tmp_entry, *entry = NULL;
        struct mlx4_promisc_qp *dqp, *tmp_dqp;
 
+       if (port < 1 || port > dev->caps.num_ports)
+               return NULL;
+
        s_steer = &mlx4_priv(dev)->steer[port - 1];
 
        /* if qp is not promisc, it cannot be duplicated */
        bool ret = false;
        int i;
 
+       if (port < 1 || port > dev->caps.num_ports)
+               return NULL;
+
        s_steer = &mlx4_priv(dev)->steer[port - 1];
 
        mailbox = mlx4_alloc_cmd_mailbox(dev);
        int err;
        struct mlx4_priv *priv = mlx4_priv(dev);
 
+       if (port < 1 || port > dev->caps.num_ports)
+               return -EINVAL;
+
        s_steer = &mlx4_priv(dev)->steer[port - 1];
 
        mutex_lock(&priv->mcg_table.mutex);
        int loc, i;
        int err;
 
+       if (port < 1 || port > dev->caps.num_ports)
+               return -EINVAL;
+
        s_steer = &mlx4_priv(dev)->steer[port - 1];
        mutex_lock(&priv->mcg_table.mutex);
 
        u8 port = gid[5];
        u8 new_entry = 0;
 
+       if (port < 1 || port > dev->caps.num_ports)
+               return -EINVAL;
+
        mailbox = mlx4_alloc_cmd_mailbox(dev);
        if (IS_ERR(mailbox))
                return PTR_ERR(mailbox);