diff options
Diffstat (limited to 'drivers/infiniband/core/security.c')
| -rw-r--r-- | drivers/infiniband/core/security.c | 14 | 
1 files changed, 9 insertions, 5 deletions
| diff --git a/drivers/infiniband/core/security.c b/drivers/infiniband/core/security.c index 2b4d80393bd0..2d5608315dc8 100644 --- a/drivers/infiniband/core/security.c +++ b/drivers/infiniband/core/security.c @@ -340,15 +340,19 @@ static struct ib_ports_pkeys *get_new_pps(const struct ib_qp *qp,  		return NULL;  	if (qp_attr_mask & IB_QP_PORT) -		new_pps->main.port_num = -			(qp_pps) ? qp_pps->main.port_num : qp_attr->port_num; +		new_pps->main.port_num = qp_attr->port_num; +	else if (qp_pps) +		new_pps->main.port_num = qp_pps->main.port_num; +  	if (qp_attr_mask & IB_QP_PKEY_INDEX) -		new_pps->main.pkey_index = (qp_pps) ? qp_pps->main.pkey_index : -						      qp_attr->pkey_index; +		new_pps->main.pkey_index = qp_attr->pkey_index; +	else if (qp_pps) +		new_pps->main.pkey_index = qp_pps->main.pkey_index; +  	if ((qp_attr_mask & IB_QP_PKEY_INDEX) && (qp_attr_mask & IB_QP_PORT))  		new_pps->main.state = IB_PORT_PKEY_VALID; -	if (!(qp_attr_mask & (IB_QP_PKEY_INDEX || IB_QP_PORT)) && qp_pps) { +	if (!(qp_attr_mask & (IB_QP_PKEY_INDEX | IB_QP_PORT)) && qp_pps) {  		new_pps->main.port_num = qp_pps->main.port_num;  		new_pps->main.pkey_index = qp_pps->main.pkey_index;  		if (qp_pps->main.state != IB_PORT_PKEY_NOT_VALID) |