Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9c58726b authored by Naresh Gottumukkala's avatar Naresh Gottumukkala Committed by Roland Dreier
Browse files

RDMA/ocrdma: Don't allow zero/invalid sgid usage

parent 1afc0454
Loading
Loading
Loading
Loading
+7 −1
Original line number Diff line number Diff line
@@ -2124,9 +2124,10 @@ static int ocrdma_set_av_params(struct ocrdma_qp *qp,
{
	int status;
	struct ib_ah_attr *ah_attr = &attrs->ah_attr;
	union ib_gid sgid;
	union ib_gid sgid, zgid;
	u32 vlan_id;
	u8 mac_addr[6];

	if ((ah_attr->ah_flags & IB_AH_GRH) == 0)
		return -EINVAL;
	cmd->params.tclass_sq_psn |=
@@ -2142,6 +2143,11 @@ static int ocrdma_set_av_params(struct ocrdma_qp *qp,
			 ah_attr->grh.sgid_index, &sgid);
	if (status)
		return status;

	memset(&zgid, 0, sizeof(zgid));
	if (!memcmp(&sgid, &zgid, sizeof(zgid)))
		return -EINVAL;

	qp->sgid_idx = ah_attr->grh.sgid_index;
	memcpy(&cmd->params.sgid[0], &sgid.raw[0], sizeof(cmd->params.sgid));
	ocrdma_resolve_dgid(qp->dev, &ah_attr->grh.dgid, &mac_addr[0]);