Re: [PATCH] IB/rxe: double free on error

Moni Shoua
2017-03-08T16:42:44Z

> 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@vger.kernel.org
>> More majordomo info at http://vger.kernel.org/majordomo-info.html