Hi Sean,

Looking on that case, I noted that the CM code (SB) checks that the GID in the incoming REQ is present in at least of one the ports of the relevant device, but not specifically on the port this request arrived to, is that following IBTA? I thought it could be problematic e.g in the case of RC QP being set by this establishment, later the RC packets would be dropped by the device if they have GRH and the GID isn't on that port table, isn't that?

Or.


    ret = cm_init_av_by_path(&work->path[0], &cm_id_priv->av);
        if (ret) {
                ib_get_cached_gid(work->port->cm_dev->ib_device,
work->port->port_num, 0, &work->path[0].sgid);
                ib_send_cm_rej(cm_id, IB_CM_REJ_INVALID_GID,
&work->path[0].sgid, sizeof work->path[0].sgid,
                               NULL, 0);
                goto rejected;
        }

 read_lock_irqsave(&cm.device_lock, flags);
        list_for_each_entry(cm_dev, &cm.device_list, list) {
                if (!ib_find_cached_gid(cm_dev->ib_device, &path->sgid,
&p, NULL)) {
                        port = cm_dev->port[p-1];
                        break;
                }
        }
        read_unlock_irqrestore(&cm.device_lock, flags);

        if (!port)
                return -EINVAL;


--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to