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