RDMA/cxgb3: Don't post zero-byte read if endpoint is going away
tx_ack() wasn't checking the endpoint state and consequently would attempt to post the p2p 0B read on an endpoint/QP that is closing or aborting. This causes a NULL pointer dereference crash. Signed-off-by: Steve Wise <swise@opengridcomputing.com> Signed-off-by: Roland Dreier <roland@purestorage.com>
This commit is contained in:

committed by
Roland Dreier

parent
257313b2a8
commit
807838686e
@@ -738,7 +738,7 @@ static inline void build_term_codes(struct respQ_msg_t *rsp_msg,
|
||||
}
|
||||
}
|
||||
|
||||
int iwch_post_zb_read(struct iwch_qp *qhp)
|
||||
int iwch_post_zb_read(struct iwch_ep *ep)
|
||||
{
|
||||
union t3_wr *wqe;
|
||||
struct sk_buff *skb;
|
||||
@@ -761,10 +761,10 @@ int iwch_post_zb_read(struct iwch_qp *qhp)
|
||||
wqe->read.local_len = cpu_to_be32(0);
|
||||
wqe->read.local_to = cpu_to_be64(1);
|
||||
wqe->send.wrh.op_seop_flags = cpu_to_be32(V_FW_RIWR_OP(T3_WR_READ));
|
||||
wqe->send.wrh.gen_tid_len = cpu_to_be32(V_FW_RIWR_TID(qhp->ep->hwtid)|
|
||||
wqe->send.wrh.gen_tid_len = cpu_to_be32(V_FW_RIWR_TID(ep->hwtid)|
|
||||
V_FW_RIWR_LEN(flit_cnt));
|
||||
skb->priority = CPL_PRIORITY_DATA;
|
||||
return iwch_cxgb3_ofld_send(qhp->rhp->rdev.t3cdev_p, skb);
|
||||
return iwch_cxgb3_ofld_send(ep->com.qp->rhp->rdev.t3cdev_p, skb);
|
||||
}
|
||||
|
||||
/*
|
||||
|
Reference in New Issue
Block a user