> This rxe_xmit_packet() looks a little bit awkward. It calls to > kfree_skb and returns ret = 0 after drop decision. It doesn't > free on error (ret != 0), but this rxe_requester does. > > However in case of not error, the skb won't be released and goto > next_cqe will be called, which has a lot of exit paths without freeing > skb. > > Moni, Yonatan > Is it done on purpose? > > In good flow skb will be freed when going down the chain call from rxe_xmit_packet(). This is the design. In bad flow we can immediately free the skb >> if (ret) { >> qp->need_req_skb = 1; >> - kfree_skb(skb); >> >> rollback_state(wqe, qp, &rollback_wqe, rollback_psn); >> >> if (ret == -EAGAIN) { >> + kfree_skb(skb); >> rxe_run_task(&qp->req.task, 1); >> goto exit; >> } >> -- >> To unsubscribe from this list: send the line "unsubscribe linux-rdma" in >> the body of a message to majordomo@xxxxxxxxxxxxxxx >> More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html