Hello, Roland!
Quoting Roland Dreier <[EMAIL PROTECTED]>:
> +static int srp_init_qp(struct srp_target_port *target,
> +                    struct ib_qp *qp)
> +{
> +     struct ib_qp_attr *attr;
> +     int ret;
> +
> +     attr = kmalloc(sizeof *attr, GFP_KERNEL);
> +     if (!attr)
> +             return -ENOMEM;
> +
> +     ret = ib_find_cached_pkey(target->srp_host->dev,
> +                               target->srp_host->port,
> +                               be16_to_cpu(target->path.pkey),
> +                               &attr->pkey_index);
> +     if (ret)
> +             return ret;
> +
> +     attr->qp_state        = IB_QPS_INIT;
> +     attr->qp_access_flags = (IB_ACCESS_REMOTE_READ |
> +                                 IB_ACCESS_REMOTE_WRITE);
> +     attr->port_num        = target->srp_host->port;
> +
> +     return ib_modify_qp(qp, attr,
> +                         IB_QP_STATE         |
> +                         IB_QP_PKEY_INDEX    |
> +                         IB_QP_ACCESS_FLAGS  |
> +                         IB_QP_PORT);
> +}

This seems to leak sizeof *attr bytes if ib_find_cached_pkey
returns an error.

-- 
MST
_______________________________________________
openib-general mailing list
[email protected]
http://openib.org/mailman/listinfo/openib-general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general

Reply via email to