--- x/drivers/infiniband/sw/rxe/rxe_comp.c +++ y/drivers/infiniband/sw/rxe/rxe_comp.c @@ -594,6 +594,8 @@ static void flush_send_queue(struct rxe_ struct rxe_queue *q = qp->sq.queue; int err; + if (!q) + return; while ((wqe = queue_head(q, q->type))) { if (notify) { err = flush_send_wqe(qp, wqe); --- x/drivers/infiniband/sw/rxe/rxe_qp.c +++ y/drivers/infiniband/sw/rxe/rxe_qp.c @@ -256,6 +256,7 @@ static int rxe_qp_init_resp(struct rxe_d int wqe_size; enum queue_type type; + skb_queue_head_init(&qp->resp_pkts); if (!qp->srq) { qp->rq.max_wr = init->cap.max_recv_wr; qp->rq.max_sge = init->cap.max_recv_sge; @@ -279,8 +280,6 @@ static int rxe_qp_init_resp(struct rxe_d } } - skb_queue_head_init(&qp->resp_pkts); - rxe_init_task(&qp->resp.task, qp, rxe_responder); qp->resp.opcode = OPCODE_NONE;