This may be the final put on a qp and result in freeing
resourcesand should not be done with interrupts disabled.
Hi Sagi,
Few things to consider in fixing this completely:
- there are some other places where iw_rem_ref() should be called
after spinlock critical section. eg: in cm_close_handler(),
iw_cm_connect(),...
- Any modifications to "cm_id_priv" should be done with in spinlock
critical section, modifying cm_id_priv->qp outside spinlocks, even
with atomic xchg(), might be error prone.
- the structure "siw_base_qp" is getting freed in siw_destroy_qp(),
but it should be done at the end of siw_free_qp().
Not sure why you say that, at the end of this function ->qp will be null
anyways...
I am about to finish writing a patch that cover all the above issues.
Will test it and submit here by EOD.
Sure, you take it. Just stumbled on it so thought I'd go ahead and send
a patch...