diff options
Diffstat (limited to 'drivers/infiniband/core/mad.c')
| -rw-r--r-- | drivers/infiniband/core/mad.c | 5 | 
1 files changed, 5 insertions, 0 deletions
| diff --git a/drivers/infiniband/core/mad.c b/drivers/infiniband/core/mad.c index 8d8af7a41a30..2281de122038 100644 --- a/drivers/infiniband/core/mad.c +++ b/drivers/infiniband/core/mad.c @@ -1811,6 +1811,11 @@ static int validate_mad(const struct ib_mad_hdr *mad_hdr,  		if (qp_num == 0)  			valid = 1;  	} else { +		/* CM attributes other than ClassPortInfo only use Send method */ +		if ((mad_hdr->mgmt_class == IB_MGMT_CLASS_CM) && +		    (mad_hdr->attr_id != IB_MGMT_CLASSPORTINFO_ATTR_ID) && +		    (mad_hdr->method != IB_MGMT_METHOD_SEND)) +			goto out;  		/* Filter GSI packets sent to QP0 */  		if (qp_num != 0)  			valid = 1; | 
