Il 03/04/23 04:52, Chunfeng Yun ha scritto:
When handle qmu transfer irq, it will unlock @mtu->lock before give back request, if another thread hanlde disconnect event at the same time, and try to disable ep, it may lock @mtu->lock and free qmu ring, then qmu irq hanlder may get a NULL gpd, avoid the KE by checking gpd's value before
KE == Kernel Error? I think you wanted to say KP == Kernel Panic instead. Also, s/hanlder/handler/g.
handling it. e.g. qmu done irq on cpu0 thread running on cpu1 qmu_done_tx() handle gpd [0] mtu3_requ_complete() mtu3_gadget_ep_disable() unlock @mtu->lock give back request lock @mtu->lock mtu3_ep_disable() mtu3_gpd_ring_free() unlock @mtu->lock lock @mtu->lock get next gpd [1] [1]: goto [0] to handle next gpd, and next gpd may be NULL.
> > Signed-off-by: Chunfeng Yun <chunfeng.yun@xxxxxxxxxxxx> This is a fix and needs a Fixes tag. Regards, Angelo