linux/drivers/infiniband/hw
Hariprasad S 6e410d8f71 RDMA/iw_cxgb4: ensure eps don't get freed while the mutex is held
In rx_data(), with the ep in FPDU_MODE, refcnt=2, if we get unexpected
streaming data, we call c4iw_modify_rc_qp() and move the qp from
RTS -> TERMINATE.  In c4iw_modify_rc_qp(), if rdma_fini() returns
an error, the ep will be dereferenced (refcnt=1).  Then rx_data()
calls c4iw_ep_disconnect() which starts the close operation.
But if send_halfclose() fails in c4iw_ep_disconnect(), we  will call
release_ep_resources() derefing the ep which reduces the refcnt to 0 and
and frees the ep. However we still has the ep mutex at that point, so we
have a touch-after-free bug.  There is a similar issue where
peer_close() calls c4iw_ep_disconnect().

The solution is to add a reference to the ep in c4iw_ep_disconnect()
after acquiring  the mutex, and release it after releasing the mutex.

Signed-off-by: Steve Wise <swise@opengridcomputing.com>
Signed-off-by: Hariprasad Shenai <hariprasad@chelsio.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
2016-05-05 16:11:14 -04:00
..
cxgb3 iw_cxgb3: initialize ibdev.iwcm->ifname for port mapping 2016-04-26 12:46:54 -04:00
cxgb4 RDMA/iw_cxgb4: ensure eps don't get freed while the mutex is held 2016-05-05 16:11:14 -04:00
i40iw i40iw: avoid potential uninitialized variable use 2016-04-06 10:37:16 -04:00
mlx4 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2016-03-19 10:05:34 -07:00
mlx5 IB/mlx5: Expose correct max_sge_rd limit 2016-04-28 10:49:17 -04:00
mthca mm/gup: Switch all callers of get_user_pages() to not pass tsk/mm 2016-02-16 10:11:12 +01:00
nes RDMA/nes: don't leak skb if carrier down 2016-04-28 21:11:09 -04:00
ocrdma IB/ocrdma: Skip using unneeded intermediate variable 2016-03-03 13:33:22 -05:00
qib IB/security: Restrict use of the write() interface 2016-04-28 12:03:16 -04:00
usnic Merge branch 'mm-pkeys-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2016-03-20 19:08:56 -07:00
Makefile i40iw: changes for build of i40iw module 2016-03-16 13:50:54 -04:00