| From foo@baz Sun May 27 17:33:37 CEST 2018 |
| From: Shiraz Saleem <shiraz.saleem@intel.com> |
| Date: Thu, 11 Jan 2018 18:10:51 -0600 |
| Subject: i40iw: Zero-out consumer key on allocate stag for FMR |
| |
| From: Shiraz Saleem <shiraz.saleem@intel.com> |
| |
| [ Upstream commit 6376e926af1a8661dd1b2e6d0896e07f84a35844 ] |
| |
| If the application invalidates the MR before the FMR WR, HW parses the |
| consumer key portion of the stag and returns an invalid stag key |
| Asynchronous Event (AE) that tears down the QP. |
| |
| Fix this by zeroing-out the consumer key portion of the allocated stag |
| returned to application for FMR. |
| |
| Fixes: ee855d3b93f3 ("RDMA/i40iw: Add base memory management extensions") |
| Signed-off-by: Shiraz Saleem <shiraz.saleem@intel.com> |
| Signed-off-by: Jason Gunthorpe <jgg@mellanox.com> |
| Signed-off-by: Sasha Levin <alexander.levin@microsoft.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| drivers/infiniband/hw/i40iw/i40iw_verbs.c | 1 + |
| 1 file changed, 1 insertion(+) |
| |
| --- a/drivers/infiniband/hw/i40iw/i40iw_verbs.c |
| +++ b/drivers/infiniband/hw/i40iw/i40iw_verbs.c |
| @@ -1515,6 +1515,7 @@ static struct ib_mr *i40iw_alloc_mr(stru |
| err_code = -EOVERFLOW; |
| goto err; |
| } |
| + stag &= ~I40IW_CQPSQ_STAG_KEY_MASK; |
| iwmr->stag = stag; |
| iwmr->ibmr.rkey = stag; |
| iwmr->ibmr.lkey = stag; |