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

Commit 0c33aeed authored by Jack Morgenstein's avatar Jack Morgenstein Committed by Roland Dreier
Browse files

[IB] Add checks to multicast attach and detach



Add checks so that we only allow multicast attach/detach with
a valid multicast GID and the correct QP type.

Signed-off-by: default avatarJack Morgenstein <jackm@mellanox.co.il>
Signed-off-by: default avatarRoland Dreier <rolandd@cisco.com>
parent 2cc78eb5
Loading
Loading
Loading
Loading
+12 −6
Original line number Diff line number Diff line
@@ -523,16 +523,22 @@ EXPORT_SYMBOL(ib_dealloc_fmr);

int ib_attach_mcast(struct ib_qp *qp, union ib_gid *gid, u16 lid)
{
	return qp->device->attach_mcast ?
		qp->device->attach_mcast(qp, gid, lid) :
		-ENOSYS;
	if (!qp->device->attach_mcast)
		return -ENOSYS;
	if (gid->raw[0] != 0xff || qp->qp_type != IB_QPT_UD)
		return -EINVAL;

	return qp->device->attach_mcast(qp, gid, lid);
}
EXPORT_SYMBOL(ib_attach_mcast);

int ib_detach_mcast(struct ib_qp *qp, union ib_gid *gid, u16 lid)
{
	return qp->device->detach_mcast ?
		qp->device->detach_mcast(qp, gid, lid) :
		-ENOSYS;
	if (!qp->device->detach_mcast)
		return -ENOSYS;
	if (gid->raw[0] != 0xff || qp->qp_type != IB_QPT_UD)
		return -EINVAL;

	return qp->device->detach_mcast(qp, gid, lid);
}
EXPORT_SYMBOL(ib_detach_mcast);