mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-27 03:10:12 +00:00
IB/qib: MADs with misset M_Keys should return failure
If a MAD is sent directly to the local HCA rather than placed on a QP and the MAD fails M_Key checks, there is no means to generate a timeout for the client, which may hang. Instead we report IB_MAD_RESULT_FAILURE, which operates the same for on-the-wire packets, but will generate a send failure back to the client. Reviewed-by: Mike Marciniszyn <mike.marciniszyn@intel.com> Signed-off-by: Jim Foraker <foraker1@llnl.gov> Signed-off-by: Roland Dreier <roland@purestorage.com>
This commit is contained in:
parent
6199c8961e
commit
3236b2d469
1 changed files with 3 additions and 1 deletions
|
@ -433,7 +433,7 @@ static int check_mkey(struct qib_ibport *ibp, struct ib_smp *smp, int mad_flags)
|
|||
ibp->mkey_lease_period * HZ;
|
||||
/* Generate a trap notice. */
|
||||
qib_bad_mkey(ibp, smp);
|
||||
ret = IB_MAD_RESULT_SUCCESS | IB_MAD_RESULT_CONSUMED;
|
||||
ret = 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -464,6 +464,7 @@ static int subn_get_portinfo(struct ib_smp *smp, struct ib_device *ibdev,
|
|||
ibp = to_iport(ibdev, port_num);
|
||||
ret = check_mkey(ibp, smp, 0);
|
||||
if (ret)
|
||||
ret = IB_MAD_RESULT_FAILURE;
|
||||
goto bail;
|
||||
}
|
||||
}
|
||||
|
@ -1848,6 +1849,7 @@ static int process_subn(struct ib_device *ibdev, int mad_flags,
|
|||
port_num && port_num <= ibdev->phys_port_cnt &&
|
||||
port != port_num)
|
||||
(void) check_mkey(to_iport(ibdev, port_num), smp, 0);
|
||||
ret = IB_MAD_RESULT_FAILURE;
|
||||
goto bail;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue